All pastes #2120018 Raw Edit

Miscellany

public text v1 · immutable
#2120018 ·published 2012-02-19 18:47 UTC
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>