rendered paste body<?xml version="1.0" encoding="UTF-8" ?>
<!-- New document created with EditiX at Thu Feb 16 23:51:19 EET 2012 -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:variable name="classlibpath">ProdLineSystemUnitClassLib</xsl:variable>
<xsl:template match="/">
<xsl:element name="AutomationMLLibrary">
<xsl:apply-templates select="production_line" mode="classlibmode"/>
<xsl:apply-templates select="production_line" mode="instancemode"/>
</xsl:element>
</xsl:template>
<xsl:template match="production_line" mode="instancemode">
<xsl:element name="InstanceHierarchy">
<xsl:attribute name="Name">production_line</xsl:attribute>
<xsl:for-each select="//unit">
<xsl:apply-templates select="./conveyor" mode="int">
<xsl:sort select="@type"/>
</xsl:apply-templates>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template match="conveyor" mode="int">
<xsl:element name="InternalElement">
<xsl:attribute name="Name">conveyor_<xsl:number value="position()"/></xsl:attribute>
<xsl:attribute name="RefBaseClassPath">ProdLineSystemUnitClassLib/<xsl:value-of select="@type"/>Conveyor</xsl:attribute>
</xsl:element>
</xsl:template>
<xsl:template match="production_line" mode="classlibmode">
<xsl:element name="SystemUnitClassLib">
<xsl:attribute name="Name">
<xsl:value-of select="$classlibpath"/>
</xsl:attribute>
<xsl:element name="SystemUnitClass">
<xsl:attribute name="Name">GenericModule</xsl:attribute>
</xsl:element>
<xsl:element name="SystemUnitClass">
<xsl:attribute name="Name">GenericConveyor</xsl:attribute>
</xsl:element>
<xsl:element name="SystemUnitClass">
<xsl:attribute name="Name">GenericSensor</xsl:attribute>
</xsl:element>
<xsl:element name="SystemUnitClass">
<xsl:attribute name="Name">GenericCrossing</xsl:attribute>
</xsl:element>
<xsl:element name="SystemUnitClass">
<xsl:attribute name="Name">GenericChassis</xsl:attribute>
</xsl:element>
<xsl:element name="SystemUnitClass">
<xsl:attribute name="Name">lift_module</xsl:attribute>
</xsl:element>
<xsl:element name="SystemUnitClass">
<xsl:attribute name="Name">lift_module</xsl:attribute>
<xsl:attribute name="RefBaseClassPath">ProdLineSystemUnitClassLib/GenericModule</xsl:attribute>
</xsl:element>
<xsl:element name="SystemUnitClass">
<xsl:attribute name="Name">starter_module</xsl:attribute>
<xsl:attribute name="RefBaseClassPath">ProdLineSystemUnitClassLib/GenericModule</xsl:attribute>
</xsl:element>
<xsl:element name="SystemUnitClass">
<xsl:attribute name="Name">workstation</xsl:attribute>
<xsl:attribute name="RefBaseClassPath">ProdLineSystemUnitClassLib/GenericModule</xsl:attribute>
</xsl:element>
<xsl:apply-templates select="//conveyor" mode="sys">
<xsl:sort select="@type"/>
</xsl:apply-templates>
</xsl:element>
</xsl:template>
<xsl:template match="conveyor" mode="sys">
<xsl:if test="./@type != (preceding::*/@type)">
<xsl:element name="SystemUnitClass">
<xsl:attribute name="Name"><xsl:value-of select="@type"/>conveyor</xsl:attribute>
<xsl:attribute name="RefBaseClassPath">ProdLineSystemUnitClassLib/<xsl:value-of select="@type"/>Conveyor</xsl:attribute>
</xsl:element>
</xsl:if>
</xsl:template>
</xsl:stylesheet>