samples/xmi2ddl.ysl2
author Volker Birk <vb@pep.foundation>
Thu, 26 Apr 2018 19:26:10 +0200
changeset 18 e14c2324eb0e
parent 0 76005e62091d
permissions -rw-r--r--
new distribution version
0
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
     1
include yslt.yml2
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
     2
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
     3
tstylesheet xmlns:uml="http://schema.omg.org/spec/UML/2.1",
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
     4
            xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" {
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
     5
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
     6
    template "/" apply "xmi:XMI/uml:Model/packagedElement", 0;
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
     7
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
     8
    template "packagedElement[@xmi:type='uml:Package']" {
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
     9
        param "name", "''";
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    10
        if "$name=''"  apply "packagedElement", 0 { with "name", "@name"; }
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    11
        if "$name!=''" apply "packagedElement", 0 { with "name", "concat($name, '_', @name)"; }
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    12
    }
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    13
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    14
    template "packagedElement[@xmi:type='uml:Class']" {
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    15
        param "name";
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    16
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    17
        | CREATE TABLE «$name»_«@name» (
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    18
        apply "ownedAttribute";
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    19
        | );
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    20
    }
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    21
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    22
    template "ownedAttribute[@xmi:type='uml:Property' and type/@xmi:type='uml:PrimitiveType']" {
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    23
        0> «@name»
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    24
        choose {
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    25
            when "type/@href='http://schema.omg.org/spec/UML/2.1/uml.xml#String'"
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    26
                >  VARCHAR
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    27
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    28
            // [...] for other types, extend when clauses
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    29
        }
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    30
        if "position()!=last()" > ,
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    31
        text "\n";
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    32
    }
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    33
}
76005e62091d initial commit
Volker Birk <vb@pep-project.org>
parents:
diff changeset
    34