<?xml encoding="UTF-8"?>
<!-- Copyright (c) 2007-2010 by Kavanagh Consultancy Limited. All rights reserved. -->
<!-- OOA of OOA Elements -->
<!ELEMENT Project (Description?, Domain*, Bridge*, DomainChart?, Configuration*)>
<!ATTLIST Project
Name CDATA #REQUIRED
Notation (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor"
Location CDATA #IMPLIED
FormatVersion CDATA #FIXED "0.03">
<!-- Name : Name
Notation : Notation
Location : URL (1c)
FormatVersion : * -->
<!ELEMENT Description (#PCDATA)>
<!ATTLIST Description
TextFormat (Plain | HTML) "Plain">
<!-- TextFormat : * -->
<!ELEMENT Domain (MissionStatement?, InformationModel?)>
<!ATTLIST Domain
Name CDATA #REQUIRED
DomainCategory (Application | Service | Architectural | Implementation) "Service">
<!-- Name : Name
DomainCategory : Domain Category -->
<!ELEMENT MissionStatement (#PCDATA)>
<!ATTLIST MissionStatement
TextFormat (Plain | HTML) "Plain">
<!-- TextFormat : * -->
<!ELEMENT InformationModel (Description?,
(EnumeratedType | SymbolicType | NumericType)*,
Object*,
(SimpleRelationship | AssociativeRelationship | ComposedRelationship
| MathematicallyDependentRelationship | SubtypeSupertypeRelationship)*,
Subsystem*,
(LifecycleModel | SingleAssignerModel | MultipleAssignerModel
| Terminator | PolymorphicDestination)*,
((SubsystemRelationshipModel?, SubsystemCommunicationModel?)
| (ObjectInformationModel?, ObjectCommunicationModel?, Report?)),
PatternFile*)>
<!ATTLIST InformationModel
Name CDATA #REQUIRED
ManualObjectNumbering (False | True) "False"
ManualRelationshipNumbering (False | True) "False">
<!-- Name : Name
ManualObjectNumbering : Boolean
ManualRelationshipNumbering : Boolean -->
<!ELEMENT EnumeratedType (Description?, LegalValue+)>
<!ATTLIST EnumeratedType
Name CDATA #REQUIRED
Predefined (False | True) "False"
DefaultValue CDATA #IMPLIED>
<!-- Name : Name
Predefined : Boolean
DefaultValue (R) : Name (1c) -->
<!ELEMENT LegalValue (Description?)>
<!ATTLIST LegalValue
Name CDATA #REQUIRED>
<!-- Name : Name -->
<!ELEMENT SymbolicType (Description?, Pattern?)>
<!ATTLIST SymbolicType
Name CDATA #REQUIRED
Predefined (False | True) "False"
MinimumLength CDATA "0"
MaximumLength CDATA #IMPLIED
DefaultValue CDATA #IMPLIED>
<!-- Name : Name
Predefined : Boolean
MinimumLength : Non-Negative Integer
MaximumLength : Non-Negative Integer (1c)
DefaultValue : String (1c) -->
<!ELEMENT Pattern (#PCDATA)>
<!ELEMENT NumericType (Description?)>
<!ATTLIST NumericType
Name CDATA #REQUIRED
Predefined (False | True) "False"
ValueFormat (Binary | Octal | Decimal | Hexadecimal | Time) "Decimal"
Unit CDATA ""
TimeUnit (Year | Month | Day | Hour | Minute | Second
| Millisecond | Microsecond | Nanosecond) #IMPLIED
MinimumValue CDATA #IMPLIED
MaximumValue CDATA #IMPLIED
MaximumDecimalPlaces CDATA #IMPLIED
PreferredDecimalPlaces CDATA "0"
Precision CDATA #IMPLIED
DefaultValue CDATA #IMPLIED>
<!-- Name : Name
Predefined : Boolean
ValueFormat : Value Format
Unit : Name (1c)
TimeUnit (M) : Time Unit (1c)
MinimumValue : Real (1c)
MaximumValue : Real (1c)
MaximumDecimalPlaces : Integer (1c)
PreferredDecimalPlaces : Non-Negative Integer
Precision (M) : Real
DefaultValue : Real (1c) -->
<!ELEMENT Object (Description?,
(SimpleAttribute | MathematicallyDependentAttribute | ReferentialAttribute | PolymorphicAttribute)*,
Identifier*)>
<!ATTLIST Object
Name CDATA #REQUIRED
FirstLetters CDATA #IMPLIED
CustomLetters CDATA ""
KeyLetters CDATA #IMPLIED
ManualNumber CDATA ""
Number CDATA #IMPLIED
ObjectCategory (TangibleThing | Role | Incident | Interaction | Specification) #IMPLIED
Prominent (False | True) "False">
<!-- Name : Name
FirstLetters (M) : Key Letters
CustomLetters : Key Letters (1c)
KeyLetters (M) : Key Letters
ManualNumber : Positive Integer (1c)
Number (M) : Positive Integer
ObjectCategory : Object Category (1c)
Prominent : Boolean -->
<!ELEMENT SimpleAttribute (Description?, ValueDomain?)>
<!ATTLIST SimpleAttribute
Name CDATA #REQUIRED
Naming (False | True) "False"
IdentifyingSuffix CDATA #IMPLIED
ManualDataType CDATA ""
DataType CDATA #IMPLIED
InitialValue CDATA #IMPLIED
FinalValue (False | True) "False"
ManualConditional (False | True) "False"
Conditional (False | True) #IMPLIED>
<!-- Name : Name
Naming : Boolean
IdentifyingSuffix (M) : String
ManualDataType (R) : Name (1c) // #REQUIRED if InitialValue specified
DataType (M) : Name (1c)
InitialValue : String (1c)
FinalValue : Boolean
ManualConditional : Boolean
Conditional (M) : Boolean -->
<!ELEMENT ValueDomain (#PCDATA)>
<!ATTLIST ValueDomain
TextFormat (Plain | HTML) "Plain">
<!-- TextFormat : * -->
<!ELEMENT MathematicallyDependentAttribute (Description?, ValueDomain?)>
<!ATTLIST MathematicallyDependentAttribute
Name CDATA #REQUIRED
IdentifyingSuffix CDATA #IMPLIED
ManualDataType CDATA ""
DataType CDATA #IMPLIED
ManualConditional (False | True) "False"
Conditional (False | True) #IMPLIED>
<!-- Name : Name
IdentifyingSuffix (M) : String
ManualDataType (R) : Name (1c)
DataType (M) : Name (1c)
ManualConditional : Boolean
Conditional (M) : Boolean -->
<!ELEMENT ReferentialAttribute (Description?)>
<!ATTLIST ReferentialAttribute
Name CDATA #REQUIRED
IdentifyingSuffix CDATA #IMPLIED
ReferentialSuffix CDATA #IMPLIED
BaseAttribute CDATA #IMPLIED
BaseAttributeStatus (Unresolved | PartiallyResolved | FullyResolved | Incompatible
| MultipleBaseAttributes | OnlyCircularReferences) #IMPLIED
ManualDataType CDATA ""
DataType CDATA #IMPLIED
LiteralValue CDATA #IMPLIED
ManualConditional (False | True) "False"
NavigationConditional (False | True) #IMPLIED
Conditional (False | True) #IMPLIED>
<!-- Name : Name
IdentifyingSuffix (M) : String
ReferentialSuffix (M) : String
BaseAttribute (M) : Name (1c)
BaseAttributeStatus (M) : Base Attribute Status
ManualDataType (R) : Name (1c) // #REQUIRED if LiteralValue specified
DataType (M) : Name (1c)
LiteralValue : String (1c)
ManualConditional : Boolean
NavigationConditional (M) : Boolean
Conditional (M) : Boolean -->
<!ELEMENT PolymorphicAttribute (PolymorphicAttributeMapping*, Description?)>
<!ATTLIST PolymorphicAttribute
Name CDATA #REQUIRED
IdentifyingSuffix CDATA #IMPLIED
SubtypeSupertypeRelationship CDATA ""
MappingComplete (False | True) #IMPLIED
MappingCompatible (False | True) #IMPLIED
ManualDataType CDATA ""
DataType CDATA #IMPLIED
ManualConditional (False | True) "False"
Conditional (False | True) #IMPLIED>
<!-- Name : Name
IdentifyingSuffix (M) : String
SubtypeSupertypeRelationship (R) : String (1c)
MappingComplete (M) : Boolean
MappingCompatible (M) : Boolean
ManualDataType (R) : Name (1c)
DataType (M) : Name (1c)
ManualConditional : Boolean
Conditional (M) : Boolean -->
<!ELEMENT PolymorphicAttributeMapping EMPTY>
<!ATTLIST PolymorphicAttributeMapping
SubtypeObject CDATA #REQUIRED
SubtypeAttribute CDATA #REQUIRED>
<!-- SubtypeObject (R) : Name
SubtypeAttribute (R) : Name -->
<!ELEMENT Identifier (IdentifyingAttribute+)>
<!ATTLIST Identifier
IdentifierID CDATA #IMPLIED
Preferred (False | True) "False">
<!-- IdentifierID (M) : String
Preferred : Boolean -->
<!ELEMENT IdentifyingAttribute EMPTY>
<!ATTLIST IdentifyingAttribute
Attribute CDATA #REQUIRED>
<!-- Attribute (R) : Name -->
<!ELEMENT SimpleRelationship (Description?,
((FirstParticipant, SecondParticipant) | (SecondParticipant, FirstParticipant)),
LoopTraversalMapping*)>
<!ATTLIST SimpleRelationship
ManualNumber CDATA ""
Number CDATA #IMPLIED
RelationshipID CDATA #REQUIRED>
<!-- ManualNumber : Positive Integer (1c)
Number (M) : Positive Integer
RelationshipID (M) : String // Should be #IMPLIED -->
<!ELEMENT FirstParticipant (FirstToSecondMapping?)>
<!ATTLIST FirstParticipant
Object CDATA #REQUIRED
Role CDATA "first"
VerbPhrase CDATA ""
Many (False | True) "False"
Conditional (False | True) "False">
<!-- Object (R) : Name
Role : Name
VerbPhrase : Name (1c)
Many : Boolean
Conditional : Boolean -->
<!ELEMENT FirstToSecondMapping (ReferentialAttributeMapping+)>
<!ATTLIST FirstToSecondMapping
TargetIdentifier CDATA #REQUIRED>
<!-- TargetIdentifier (R) : String -->
<!ELEMENT ReferentialAttributeMapping EMPTY>
<!ATTLIST ReferentialAttributeMapping
ReferentialAttribute CDATA #REQUIRED
IdentifyingAttribute CDATA #REQUIRED
Constrained (False | True) "False"
LoopConstrained (False | True) #IMPLIED>
<!-- ReferentialAttribute (R) : Name
IdentifyingAttribute (R) : Name
Constrained : Boolean
LoopConstrained (M) : Boolean -->
<!ELEMENT SecondParticipant (SecondToFirstMapping?)>
<!ATTLIST SecondParticipant
Object CDATA #REQUIRED
Role CDATA "second"
VerbPhrase CDATA ""
Many (False | True) "False"
Conditional (False | True) "False">
<!-- Object (R) : Name
Role : Name
VerbPhrase : Name (1c)
Many : Boolean
Conditional : Boolean -->
<!ELEMENT SecondToFirstMapping (ReferentialAttributeMapping+)>
<!ATTLIST SecondToFirstMapping
TargetIdentifier CDATA #REQUIRED>
<!-- TargetIdentifier (R) : String -->
<!ELEMENT LoopTraversalMapping EMPTY>
<!ATTLIST LoopTraversalMapping
Relationship CDATA #REQUIRED
SourceObject CDATA #IMPLIED
SourceRole CDATA #IMPLIED
TargetObject CDATA #REQUIRED
TargetRole CDATA #IMPLIED>
<!-- Relationship (R) : String
SourceObject (R) : Name
SourceRole (R) : Name
TargetObject (R) : Name
TargetRole (R) : Name -->
<!ELEMENT AssociativeRelationship (Description?, FirstParticipant, SecondParticipant, AssociativeParticipant,
LoopTraversalMapping*)>
<!ATTLIST AssociativeRelationship
ManualNumber CDATA ""
Number CDATA #IMPLIED
RelationshipID CDATA #REQUIRED>
<!-- ManualNumber : Positive Integer (1c)
Number (M) : Positive Integer
RelationshipID (M) : String // Should be #IMPLIED -->
<!ELEMENT AssociativeParticipant (AssociativeToFirstMapping?, AssociativeToSecondMapping?)>
<!ATTLIST AssociativeParticipant
Object CDATA #REQUIRED
Role CDATA #FIXED "associative"
VerbPhrase CDATA ""
ConnectorPhrase CDATA ""
Many (False | True) "False"
Conditional (False | True) "False">
<!-- Object (R) : Name
Role : Name = "associative"
VerbPhrase : Name (1c)
ConnectorPhrase : Name (1c)
Many : Boolean
Conditional : Boolean -->
<!ELEMENT AssociativeToFirstMapping (ReferentialAttributeMapping+)>
<!ATTLIST AssociativeToFirstMapping
TargetIdentifier CDATA #REQUIRED>
<!-- TargetIdentifier (R) : String -->
<!ELEMENT AssociativeToSecondMapping (ReferentialAttributeMapping+)>
<!ATTLIST AssociativeToSecondMapping
TargetIdentifier CDATA #REQUIRED>
<!-- TargetIdentifier (R) : String -->
<!ELEMENT ComposedRelationship (Description?,
((FirstParticipant, SecondParticipant) | (SecondParticipant, FirstParticipant)),
LoopTraversalMapping, LoopTraversalMapping+)>
<!ATTLIST ComposedRelationship
ManualNumber CDATA ""
Number CDATA #IMPLIED
RelationshipID CDATA #REQUIRED>
<!-- ManualNumber : Positive Integer (1c)
Number (M) : Positive Integer
RelationshipID (M) : String // Should be #IMPLIED -->
<!ELEMENT MathematicallyDependentRelationship (Description?, FirstParticipant, SecondParticipant,
LoopTraversalMapping*)>
<!ATTLIST MathematicallyDependentRelationship
ManualNumber CDATA ""
Number CDATA #IMPLIED
RelationshipID CDATA #REQUIRED>
<!-- ManualNumber : Positive Integer (1c)
Number (M) : Positive Integer
RelationshipID (M) : String // Should be #IMPLIED -->
<!ELEMENT SubtypeSupertypeRelationship (Description?, SupertypeParticipant, SubtypeParticipant, SubtypeParticipant+)>
<!ATTLIST SubtypeSupertypeRelationship
ManualNumber CDATA ""
Number CDATA #IMPLIED
RelationshipID CDATA #REQUIRED>
<!-- ManualNumber : Positive Integer (1c)
Number (M) : Positive Integer
RelationshipID (M) : String // Should be #IMPLIED -->
<!ELEMENT SupertypeParticipant EMPTY>
<!ATTLIST SupertypeParticipant
Object CDATA #REQUIRED
Role CDATA #FIXED "supertype">
<!-- Object (R) : Name
Role : Name = "supertype" -->
<!ELEMENT SubtypeParticipant (SubtypeToSupertypeMapping?)>
<!ATTLIST SubtypeParticipant
Object CDATA #REQUIRED
Role CDATA #FIXED "subtype">
<!-- Object (R) : Name
Role : Name = "subtype" -->
<!ELEMENT SubtypeToSupertypeMapping (ReferentialAttributeMapping+)>
<!ATTLIST SubtypeToSupertypeMapping
TargetIdentifier CDATA #REQUIRED>
<!-- TargetIdentifier (R) : String -->
<!ELEMENT Subsystem (Description?, AssignedObject*, AssignedRelationship*,
ObjectInformationModel?, ObjectCommunicationModel?, Report?)>
<!ATTLIST Subsystem
Name CDATA #REQUIRED
PrefixLetters CDATA ""
ManualLowestNumber CDATA ""
ManualHighestNumber CDATA ""
LowestNumber CDATA #IMPLIED
HighestNumber CDATA #IMPLIED>
<!-- Name : Name
PrefixLetters : Key Letters (1c)
ManualLowestNumber : Positive Integer (1c)
ManualHighestNumber : Positive Integer (1c)
LowestNumber (M) : Positive Integer
HighestNumber (M) : Positive Integer -->
<!ELEMENT AssignedObject EMPTY>
<!ATTLIST AssignedObject
Object CDATA #REQUIRED>
<!-- Object (R) : Name -->
<!ELEMENT AssignedRelationship EMPTY>
<!ATTLIST AssignedRelationship
Relationship CDATA #REQUIRED>
<!-- Relationship (R) : String -->
<!ELEMENT LifecycleModel (Description?,
(AttributeDataItem | TransientDataItem)*,
(CreationEvent | TransitionEvent)*,
TransitionNote*,
(SimpleState | CreationState | DeletionState)*,
StateTransitionDiagram?)>
<!ATTLIST LifecycleModel
ActiveObject CDATA #REQUIRED
ManualEventNumbering (False | True) "False"
LabelPrefix CDATA #IMPLIED
ManualStateNumbering (False | True) "False">
<!-- ActiveObject (R) : Name
ManualEventNumbering : Boolean
LabelPrefix (M) : String
ManualStateNumbering : Boolean -->
<!ELEMENT AttributeDataItem (Description?)>
<!ATTLIST AttributeDataItem
Name CDATA #REQUIRED
Object CDATA #REQUIRED
Attribute CDATA #REQUIRED
Many (False | True) "False"
Conditional (False | True) "False">
<!-- Name : Name
Object (R) : Name
Attribute (R) : Name
Many : Boolean
Conditional : Boolean -->
<!ELEMENT TransientDataItem (Description?)>
<!ATTLIST TransientDataItem
Name CDATA #REQUIRED
DataType CDATA ""
Many (False | True) "False"
Conditional (False | True) "False">
<!-- Name : Name
DataType (R) : Name (1c)
Many : Boolean
Conditional : Boolean -->
<!ELEMENT CreationEvent (CarriedDataItem*, Description?)>
<!ATTLIST CreationEvent
Meaning CDATA #REQUIRED
ManualNumber CDATA ""
Number CDATA #IMPLIED
Label CDATA #IMPLIED>
<!-- Meaning (R) : Name
ManualNumber : Positive Integer (1c)
Number (M) : Positive Integer
Label (M) : String -->
<!ELEMENT CarriedDataItem EMPTY>
<!ATTLIST CarriedDataItem
SupplementalDataItem CDATA #REQUIRED>
<!-- SupplementalDataItem (R) : Name -->
<!ELEMENT TransitionEvent (CarriedDataItem*, Description?)>
<!ATTLIST TransitionEvent
Meaning CDATA #REQUIRED
ManualNumber CDATA ""
Number CDATA #IMPLIED
Label CDATA #IMPLIED>
<!-- Meaning (R) : Name
ManualNumber : Positive Integer (1c)
Number (M) : Positive Integer
Label (M) : String -->
<!ELEMENT TransitionNote (Description?)>
<!ATTLIST TransitionNote
TransitionNoteID CDATA #IMPLIED>
<!-- TransitionNoteID (M) : String -->
<!ELEMENT SimpleState (Description?, ReceivedDataItem*, SimpleAction?, InternalEvent*,
(NewStateTransition | EventIgnoredTransition | CannotHappenTransition)*)>
<!ATTLIST SimpleState
Name CDATA #REQUIRED
ManualNumber CDATA ""
Number CDATA #IMPLIED
InitialState (False | True) "False"
FinalState (False | True) #IMPLIED
WaitState (False | True) #IMPLIED
TransitionEventsCompatible (False | True) #IMPLIED>
<!-- Name : Name
ManualNumber : Positive Integer (1c)
Number (M) : Positive Integer
InitialState : Boolean
FinalState (M) : Boolean
WaitState (M) : Boolean
TransitionEventsCompatible (M) : Boolean -->
<!ELEMENT ReceivedDataItem EMPTY>
<!ATTLIST ReceivedDataItem
SupplementalDataItem CDATA #REQUIRED>
<!-- SupplementalDataItem (R) : Name -->
<!ELEMENT SimpleAction (StatementBlock?)>
<!ATTLIST SimpleAction
MaximumVisibleLOC CDATA "">
<!-- MaximumVisibleLOC : Non-Negative Integer (1c) -->
<!ELEMENT StatementBlock (#PCDATA)>
<!ELEMENT InternalEvent EMPTY>
<!ATTLIST InternalEvent
Event CDATA #REQUIRED>
<!-- Event (R) : String -->
<!ELEMENT NewStateTransition EMPTY>
<!ATTLIST NewStateTransition
TransitionEvent CDATA #REQUIRED
NewState CDATA #REQUIRED
NewStateCompatible (False | True) #IMPLIED
TransferOfControl (False | True) "False"
TransitionNote CDATA "">
<!-- TransitionEvent (R) : Name
NewState (R) : Name
NewStateCompatible (M) : Boolean
TransferOfControl : Boolean
TransitionNote (R) : String (1c) -->
<!ELEMENT EventIgnoredTransition EMPTY>
<!ATTLIST EventIgnoredTransition
TransitionEvent CDATA #REQUIRED
TransitionNote CDATA "">
<!-- TransitionEvent (R) : Name
TransitionNote (R) : String (1c) -->
<!ELEMENT CannotHappenTransition EMPTY>
<!ATTLIST CannotHappenTransition
TransitionEvent CDATA #REQUIRED
TransitionNote CDATA "">
<!-- TransitionEvent (R) : Name
TransitionNote (R) : String (1c) -->
<!ELEMENT CreationState (Description?, ReceivedDataItem*, SimpleAction?, InternalEvent*,
(NewStateTransition | EventIgnoredTransition | CannotHappenTransition)*)>
<!ATTLIST CreationState
Name CDATA #REQUIRED
ManualNumber CDATA ""
Number CDATA #IMPLIED
CreationEvent CDATA #REQUIRED
CreationEventCompatible (False | True) #IMPLIED
InitialState (False | True) "False"
FinalState (False | True) #IMPLIED
WaitState (False | True) #IMPLIED>
<!-- Name : Name
ManualNumber : Positive Integer (1c)
Number (M) : Positive Integer
CreationEvent (R) : Name
CreationEventCompatible (M) : Boolean
InitialState : Boolean
FinalState (M) : Boolean
WaitState (M) : Boolean -->
<!ELEMENT DeletionState (Description?, ReceivedDataItem*, SimpleAction?, InternalEvent*)>
<!ATTLIST DeletionState
Name CDATA #REQUIRED
ManualNumber CDATA ""
Number CDATA #IMPLIED
TransitionEventsCompatible (False | True) #IMPLIED>
<!-- Name : Name
ManualNumber : Positive Integer (1c)
Number (M) : Positive Integer
TransitionEventsCompatible (M) : Boolean -->
<!ELEMENT SingleAssignerModel (Description?, (AttributeDataItem | TransientDataItem)*,
TransitionEvent*, TransitionNote*, SimpleState*, StateTransitionDiagram?)>
<!ATTLIST SingleAssignerModel
CompetitiveRelationship CDATA #REQUIRED
ManualEventNumbering (False | True) "False"
LabelPrefix CDATA #IMPLIED
ManualStateNumbering (False | True) "False">
<!-- CompetitiveRelationship (R) : String
ManualEventNumbering : Boolean
LabelPrefix (M) : String
ManualStateNumbering : Boolean -->
<!ELEMENT MultipleAssignerModel (Description?, (AttributeDataItem | TransientDataItem)*,
TransitionEvent*, TransitionNote*, SimpleState*, StateTransitionDiagram?)>
<!ATTLIST MultipleAssignerModel
CompetitiveRelationship CDATA #REQUIRED
PartitioningObject CDATA #REQUIRED
ManualEventNumbering (False | True) "False"
LabelPrefix CDATA #IMPLIED
ManualStateNumbering (False | True) "False">
<!-- CompetitiveRelationship (R) : String
PartitioningObject (R) : Name
ManualEventNumbering : Boolean
LabelPrefix (M) : String
ManualStateNumbering : Boolean -->
<!ELEMENT Terminator (Description?, (AttributeDataItem | TransientDataItem)*, DomainCrossingEvent*, ExternalEvent*)>
<!ATTLIST Terminator
Name CDATA #REQUIRED
FirstLetters CDATA #IMPLIED
CustomLetters CDATA ""
KeyLetters CDATA #IMPLIED
ManualEventNumbering (False | True) "False"
LabelPrefix CDATA #IMPLIED>
<!-- Name (R) : String
FirstLetters (M) : Key Letters
CustomLetters : Key Letters (1c)
KeyLetters (M) : Key Letters
ManualEventNumbering : Boolean
LabelPrefix (M) : String -->
<!ELEMENT DomainCrossingEvent (CarriedDataItem*, Description?)>
<!ATTLIST DomainCrossingEvent
Meaning CDATA #REQUIRED
ManualNumber CDATA ""
Number CDATA #IMPLIED
Label CDATA #IMPLIED>
<!-- Meaning (R) : Name
ManualNumber : Positive Integer (1c)
Number (M) : Positive Integer
Label (M) : String -->
<!ELEMENT ExternalEvent EMPTY>
<!ATTLIST ExternalEvent
Event CDATA #REQUIRED>
<!-- Event (R) : String -->
<!ELEMENT PolymorphicDestination (Description?, (AttributeDataItem | TransientDataItem)*, PolymorphicEvent*)>
<!ATTLIST PolymorphicDestination
SubtypeSupertypeRelationship CDATA #REQUIRED
ManualEventNumbering (False | True) "False"
LabelPrefix CDATA #IMPLIED>
<!-- SubtypeSupertypeRelationship (R) : String
ManualEventNumbering : Boolean
LabelPrefix (M) : String -->
<!ELEMENT PolymorphicEvent (CarriedDataItem*, Description?, PolymorphicEventMapping*)>
<!ATTLIST PolymorphicEvent
Meaning CDATA #REQUIRED
ManualNumber CDATA ""
Number CDATA #IMPLIED
Label CDATA #IMPLIED
MappingComplete CDATA #IMPLIED
MappingCompatible CDATA #IMPLIED>
<!-- Meaning (R) : Name
ManualNumber : Positive Integer (1c)
Number (M) : Positive Integer
Label (M) : String
MappingComplete (M) : Boolean
MappingCompatible (M) : Boolean -->
<!ELEMENT PolymorphicEventMapping EMPTY>
<!ATTLIST PolymorphicEventMapping
SubtypeEvent CDATA #REQUIRED>
<!-- SubtypeEvent (R) : String -->
<!ELEMENT PatternFile (#PCDATA)>
<!ATTLIST PatternFile
Path CDATA #IMPLIED
RelativePath CDATA #IMPLIED
Cached (False | True) "False"
RuleSetName CDATA #REQUIRED>
<!-- Path : *
RelativePath : *
Cached : *
RuleSetName : * -->
<!ELEMENT Bridge (ClientAssumptions?, ServerRequirements?)>
<!ATTLIST Bridge
ClientDomain CDATA #REQUIRED
ServerDomain CDATA #REQUIRED>
<!-- ClientDomain (R) : Name
ServerDomain (R) : Name -->
<!ELEMENT ClientAssumptions (#PCDATA)>
<!ATTLIST ClientAssumptions
TextFormat (Plain | HTML) "Plain">
<!-- TextFormat : * -->
<!ELEMENT ServerRequirements (#PCDATA)>
<!ATTLIST ServerRequirements
TextFormat (Plain | HTML) "Plain">
<!-- TextFormat : * -->
<!ELEMENT Configuration (Description?, ArchetypeFile*, Translation*)>
<!ATTLIST Configuration
Name CDATA #REQUIRED>
<!-- Name : * -->
<!ELEMENT ArchetypeFile (#PCDATA)>
<!ATTLIST ArchetypeFile
Path CDATA #IMPLIED
RelativePath CDATA #IMPLIED
Cached (False | True) "False">
<!-- Path : *
RelativePath : *
Cached : * -->
<!ELEMENT Translation (ErrorMessages?, GeneratedFile*, Notes?)>
<!ATTLIST Translation
ArchetypeFile CDATA #REQUIRED
StartTime CDATA #REQUIRED
Duration CDATA #REQUIRED
ExitStatus CDATA #REQUIRED>
<!-- ArchetypeFile : *
StartTime : *
Duration : *
ExitStatus : * -->
<!ELEMENT ErrorMessages (#PCDATA)>
<!ATTLIST ErrorMessages
TextFormat (Plain | HTML) "Plain">
<!-- TextFormat : * -->
<!ELEMENT GeneratedFile (#PCDATA)>
<!ATTLIST GeneratedFile
Path CDATA #IMPLIED
RelativePath CDATA #IMPLIED
Cached (False | True) "False">
<!-- Path : *
RelativePath : *
Cached : * -->
<!ELEMENT Notes (#PCDATA)>
<!ATTLIST Notes
TextFormat (Plain | HTML) "Plain">
<!-- TextFormat : * -->
<!-- Diagramming Elements -->
<!-- All diagrams are optional in OOA Interchange Format. -->
<!ELEMENT DomainChart (Shape*, BinaryLink*)>
<!ATTLIST DomainChart
Path CDATA #IMPLIED
RelativePath CDATA #IMPLIED
Width CDATA #REQUIRED
Height CDATA #REQUIRED
Font CDATA #REQUIRED
Notation (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor">
<!-- Path : *
RelativePath : *
Width : Non-Negative Integer
Height : Non-Negative Integer
Font : Font
Notation : Notation -->
<!ELEMENT SubsystemRelationshipModel (Shape*, BinaryLink*)>
<!ATTLIST SubsystemRelationshipModel
Path CDATA #IMPLIED
RelativePath CDATA #IMPLIED
Width CDATA #REQUIRED
Height CDATA #REQUIRED
Font CDATA #REQUIRED
Notation (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor">
<!-- Path : *
RelativePath : *
Width : Non-Negative Integer
Height : Non-Negative Integer
Font : Font
Notation : Notation -->
<!ELEMENT SubsystemCommunicationModel (Shape*, BinaryLink*)>
<!ATTLIST SubsystemCommunicationModel
Path CDATA #IMPLIED
RelativePath CDATA #IMPLIED
Width CDATA #REQUIRED
Height CDATA #REQUIRED
Font CDATA #REQUIRED
Notation (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor">
<!-- Path : *
RelativePath : *
Width : Non-Negative Integer
Height : Non-Negative Integer
Font : Font
Notation : Notation -->
<!ELEMENT ObjectInformationModel (Shape*, (BinaryLink | SpurLink | ParentLink | ChildLink)*)>
<!ATTLIST ObjectInformationModel
Path CDATA #IMPLIED
RelativePath CDATA #IMPLIED
Width CDATA #REQUIRED
Height CDATA #REQUIRED
Font CDATA #REQUIRED
Notation (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor">
<!-- Path : *
RelativePath : *
Width : Non-Negative Integer
Height : Non-Negative Integer
Font : Font
Notation : Notation -->
<!ELEMENT ObjectCommunicationModel (Shape*, BinaryLink*)>
<!ATTLIST ObjectCommunicationModel
Path CDATA #IMPLIED
RelativePath CDATA #IMPLIED
Width CDATA #REQUIRED
Height CDATA #REQUIRED
Font CDATA #REQUIRED
Notation (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor">
<!-- Path : *
RelativePath : *
Width : Non-Negative Integer
Height : Non-Negative Integer
Font : Font
Notation : Notation -->
<!ELEMENT StateTransitionDiagram (Shape*, (BinaryLink | SimpleUnaryLink)*)>
<!ATTLIST StateTransitionDiagram
Path CDATA #IMPLIED
RelativePath CDATA #IMPLIED
Width CDATA #REQUIRED
Height CDATA #REQUIRED
Font CDATA #REQUIRED
Notation (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor">
<!-- Path : *
RelativePath : *
Width : Non-Negative Integer
Height : Non-Negative Integer
Font : Font
Notation : Notation -->
<!ELEMENT Shape EMPTY>
<!ATTLIST Shape
Name CDATA #REQUIRED
X CDATA #REQUIRED
Y CDATA #REQUIRED
Width CDATA #REQUIRED
Height CDATA #REQUIRED
PreferredSizeUsage (None | UseAsSize | UseAsMinimumSize | UseAsMaximumSize) "UseAsSize">
<!-- Name : String
X : Integer
Y : Integer
Width : Non-Negative Integer
Height : Non-Negative Integer
PreferredSizeUsage : Preferred Size Usage -->
<!ELEMENT BinaryLink (WayPoint*)>
<!ATTLIST BinaryLink
LinkID CDATA #REQUIRED
SourceShape CDATA #REQUIRED
TargetShape CDATA #REQUIRED
LabelAnchorFlipped (False | True) "False">
<!-- LinkID : String
SourceShape (R) : String
TargetShape (R) : String
LabelAnchorFlipped : Boolean -->
<!ELEMENT WayPoint EMPTY>
<!ATTLIST WayPoint
X CDATA #REQUIRED
Y CDATA #REQUIRED>
<!-- X : Integer
Y : Integer -->
<!ELEMENT SimpleUnaryLink (WayPoint*, TargetPoint)>
<!ATTLIST SimpleUnaryLink
LinkID CDATA #REQUIRED
SourceShape CDATA #REQUIRED>
<!-- LinkID : String
SourceShape (R) : String -->
<!ELEMENT TargetPoint EMPTY>
<!ATTLIST TargetPoint
X CDATA #REQUIRED
Y CDATA #REQUIRED>
<!-- X : Integer
Y : Integer -->
<!ELEMENT SpurLink (WayPoint*, TargetPoint)>
<!ATTLIST SpurLink
LinkID CDATA #REQUIRED
SourceShape CDATA #REQUIRED>
<!-- LinkID : String
SourceShape (R) : String -->
<!ELEMENT ParentLink (WayPoint*, TargetPoint)>
<!ATTLIST ParentLink
LinkID CDATA #REQUIRED
SourceShape CDATA #REQUIRED>
<!-- LinkID : String
SourceShape (R) : String -->
<!ELEMENT ChildLink (WayPoint*)>
<!ATTLIST ChildLink
LinkID CDATA #REQUIRED
SourceShape CDATA #REQUIRED>
<!-- LinkID : String
SourceShape (R) : String -->
<!-- Reporting Elements -->
<!-- All reports are optional in OOA Interchange Format.
Furthermore, all reporting elements will become obsolete
when current Information Model Report is replaced with an archetype template. -->
<!ELEMENT Report (Attachment*)>
<!ATTLIST Report
Path CDATA #IMPLIED
RelativePath CDATA #IMPLIED
Id CDATA #REQUIRED>
<!-- Path : *
RelativePath : *
Id : * -->
<!ELEMENT Attachment EMPTY>
<!ATTLIST Attachment
Path CDATA #IMPLIED
RelativePath CDATA #IMPLIED
Id CDATA #REQUIRED>
<!-- Path : *
RelativePath : *
Id : * -->
<!-- End of File -->