docs: Include files are always searched at standard location, too.
This removes the need to specify the location where yml2 was unpacked or
installed as YML_PATH. So this now works:
YML_PATH=/foo ./yml2proc --xml2yml
The standard system location <prefix>/share/yml2 is now always appended to
the include search path. If this path does not exist, the directory one
above the `backend.py` file is added, allowing the same behaviour for
uninstalled yml2.
In the Makefile enforce the .ysl2 files to be searched in the current
directory first.
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
}
}
}