include yslt.yml2 define operator "†(\S+)" as call "printType" with "name", "%1"; define operator "“(.*?)”" as call "ucase" with "text", "%1"; decl umlstylesheet is tstylesheet ( xmlns:uml="http://schema.omg.org/spec/UML/2.1", xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" ); umlstylesheet { template "/xmi:XMI/uml:Model" apply "packagedElement", 0; template "packagedElement[@xmi:type='uml:Package']" { | package «@name»; | apply "packagedElement", 0; } template "packagedElement[@xmi:type='uml:Class']" { | class «@name» { apply "ownedAttribute"; | } if "position() != last()" | } template "ownedAttribute[@xmi:type='uml:Property' and count(@association)=0]" { | // attribute «@name» | | public †type get“@name”() { | return «@name»; | } | | public void set“@name”(†type value) { | «@name» = value; | } | | private †type «@name»; if "position() != last()" | } function "ucase" { param "text"; > «translate(substring($text, 1, 1), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')» > «substring($text, 2)» } function "printType" { param "name"; choose { when '$name/@href = "http://schema.omg.org/spec/UML/2.1/uml.xml#UnlimitedNatural"' > int when '$name/@href = "http://schema.omg.org/spec/UML/2.1/uml.xml#String"' > String } } }