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