Author: rahul
Date: Thu Aug 27 02:46:03 2009
New Revision: 808257
URL: http://svn.apache.org/viewvc?rev=808257&view=rev
Log:
A simple (and yet incomplete) stylesheet that converts XMI documents such as
those from Eclipse MDT UML2 Tools models to corresponding SCXML documents.
Added:
commons/proper/scxml/branches/J6/extras/
commons/proper/scxml/branches/J6/extras/README.txt (with props)
commons/proper/scxml/branches/J6/extras/xmi2scxml.xsl (with props)
Added: commons/proper/scxml/branches/J6/extras/README.txt
URL:
http://svn.apache.org/viewvc/commons/proper/scxml/branches/J6/extras/README.txt?rev=808257&view=auto
==============================================================================
--- commons/proper/scxml/branches/J6/extras/README.txt (added)
+++ commons/proper/scxml/branches/J6/extras/README.txt Thu Aug 27 02:46:03 2009
@@ -0,0 +1,31 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+$Id$
+
+ Commons SCXML Extras
+
+(1) xmi2scxml.xsl
+
+ A simple and yet incomplete stylesheet that converts from XMI format to
+ multiple SCXML documents.
+
+ Tried with Eclipse MDT UML2 Tools 0.9.0 under Incubation.
+
+ Example usage:
+
+ java -jar saxon9.jar -t -s:statemachines.uml -xsl:xmi2scxml.xsl
-o:conversionsummary.xml
+
Propchange: commons/proper/scxml/branches/J6/extras/README.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/scxml/branches/J6/extras/README.txt
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: commons/proper/scxml/branches/J6/extras/xmi2scxml.xsl
URL:
http://svn.apache.org/viewvc/commons/proper/scxml/branches/J6/extras/xmi2scxml.xsl?rev=808257&view=auto
==============================================================================
--- commons/proper/scxml/branches/J6/extras/xmi2scxml.xsl (added)
+++ commons/proper/scxml/branches/J6/extras/xmi2scxml.xsl Thu Aug 27 02:46:03
2009
@@ -0,0 +1,165 @@
+<?xml version="1.0"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+<xsl:stylesheet version="2.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xmi="http://schema.omg.org/spec/XMI/2.1"
+ xmlns:uml="http://www.eclipse.org/uml2/3.0.0/UML"
xmlns:scxml="http://www.w3.org/2005/07/scxml">
+
+ <xsl:output method="xml" indent="yes" encoding="UTF-8" />
+
+ <xsl:template match="uml:Package">
+<xsl:comment>
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+</xsl:comment><xsl:text>
</xsl:text>
+<xsl:comment>
+ This file was generated by a stylesheet from the Apache Commons SCXML
+ project: http://commons.apache.org/scxml
+</xsl:comment><xsl:text>
</xsl:text>
+ <scxmlfiles>
+ <xsl:apply-templates select="packagedElement" />
+ </scxmlfiles><xsl:text>
</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="packagedElement">
+ <xsl:variable name="type" select="@xmi:type" />
+ <xsl:variable name="name" select="@name" />
+ <xsl:variable name="filename" select="concat($name,'.xml')" />
+ <file uml2name="{$name}" scxmlfile="{$filename}" />
+ <xsl:result-document href="{$filename}" method="xml">
+<xsl:comment>
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+</xsl:comment><xsl:text>
</xsl:text>
+<xsl:comment>
+ This file was generated by a stylesheet from the Apache Commons SCXML
+ project: http://commons.apache.org/scxml
+</xsl:comment><xsl:text>
</xsl:text>
+ <xsl:choose>
+ <xsl:when test="count(child::region) > 1">
+ <scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0"
+ initial="__root">
+ <parallel xmlns="http://www.w3.org/2005/07/scxml" id="__root">
+ <xsl:apply-templates select="region">
+ <xsl:with-param name="orth" select="true()"/>
+ </xsl:apply-templates>
+ </parallel>
+ </scxml><xsl:text>
</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0"
+
initial="{region/subvert...@xmi:type='uml:Pseudostate'][empty(@kind)]/@xmi:id}">
+ <xsl:apply-templates select="region">
+ <xsl:with-param name="orth" select="false()"/>
+ </xsl:apply-templates>
+ </scxml><xsl:text>
</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:result-document>
+ </xsl:template>
+
+ <xsl:template match="region">
+ <xsl:param name="orth" />
+ <xsl:choose>
+ <xsl:when test="$orth">
+ <state xmlns="http://www.w3.org/2005/07/scxml"
id="{concat('__region',position())}"
initial="{subvert...@xmi:type='uml:Pseudostate'][empty(@kind)]/@xmi:id}">
+ <xsl:apply-templates select="subvertex" />
+ </state>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="subvertex" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="subvertex">
+ <xsl:variable name="type" select="@xmi:type" />
+ <xsl:variable name="xmiid" select="@xmi:id" />
+ <xsl:variable name="name" select="@name" />
+ <xsl:variable name="id" select="if (empty($name)) then $xmiid else $name"
/>
+ <xsl:choose>
+ <xsl:when test="$type='uml:Pseudostate'">
+ <xsl:choose>
+ <xsl:when test="@kind='deepHistory'">
+ <history xmlns="http://www.w3.org/2005/07/scxml" type="deep"
id="{$id}">
+ <xsl:apply-templates select="../transiti...@source=$xmiid]" />
+ </history>
+ </xsl:when>
+ <xsl:when test="@kind='shallowHistory'">
+ <history xmlns="http://www.w3.org/2005/07/scxml" type="shallow"
id="{$id}">
+ <xsl:apply-templates select="../transiti...@source=$xmiid]" />
+ </history>
+ </xsl:when>
+ <xsl:otherwise>
+ <state xmlns="http://www.w3.org/2005/07/scxml" id="{$id}">
+ <xsl:apply-templates select="../transiti...@source=$xmiid]" />
+ </state>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$type='uml:State'">
+ <state xmlns="http://www.w3.org/2005/07/scxml" id="{$id}">
+ <xsl:apply-templates select="../transiti...@source=$xmiid]" />
+ </state>
+ </xsl:when>
+ <xsl:when test="$type='uml:FinalState'">
+ <final xmlns="http://www.w3.org/2005/07/scxml" id="{$id}" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="transition">
+ <xsl:variable name="target" select="@target" />
+ <xsl:variable name="tname" select="if
(empty(../subvert...@xmi:id=$target]/@name)) then
../subvert...@xmi:id=$target]/@xmi:id else ../subvert...@xmi:id=$target]/@name"
/>
+ <xsl:choose>
+ <xsl:when test="empty(@name)">
+ <transition xmlns="http://www.w3.org/2005/07/scxml" target="{$tname}"
/>
+ </xsl:when>
+ <xsl:otherwise>
+ <transition xmlns="http://www.w3.org/2005/07/scxml" event="{...@name}"
target="{$tname}" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
Propchange: commons/proper/scxml/branches/J6/extras/xmi2scxml.xsl
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/scxml/branches/J6/extras/xmi2scxml.xsl
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL