Orb/utils/sysdefupgrade.xsl
changeset 3 d8fccb2cd802
parent 1 82f11024044a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Orb/utils/sysdefupgrade.xsl	Fri Apr 23 20:47:58 2010 +0100
@@ -0,0 +1,133 @@
+<?xml version="1.0"?>
+<!--
+Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+All rights reserved.-->
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:key name="id" match="*[@name]" use="@name"/>
+	<xsl:param name="td"/>
+	
+<xsl:template match="/*">
+	<xsl:message>Cannot process this document</xsl:message>
+</xsl:template>
+
+<xsl:template match="/SystemDefinition[@schema='2.0.1']">
+<xsl:call-template name="DTD"/>
+<SystemDefinition schema="3.0.0">
+	<systemModel name="{@name}">
+		<xsl:apply-templates select="systemModel/layer"/>
+	</systemModel>
+</SystemDefinition>
+</xsl:template>
+
+<xsl:template match="@*"/>
+
+<xsl:template match="@name"> 
+	<!-- throw an error if there are duplicate IDs -->
+	<xsl:if test="count(key('id',.))!=1">
+		<xsl:message>Duplicate ID, cannot transform: <xsl:value-of select="."/></xsl:message>
+	</xsl:if>
+	<xsl:attribute name="id"><xsl:value-of select="."/></xsl:attribute>
+</xsl:template>
+
+<xsl:template match="@long-name">
+	<xsl:attribute name="name"><xsl:value-of select="."/></xsl:attribute>
+</xsl:template>
+
+
+
+<xsl:template match="layer|collection">
+	<xsl:copy>
+		<xsl:apply-templates select="@*"/>
+		<xsl:apply-templates select="*|comment()"/>
+	</xsl:copy>
+</xsl:template>
+
+
+<xsl:template match="block|subblock">
+	<package>
+		<xsl:apply-templates select="@name|@long-name|@level|@span|@levels|@tech_domain"/>
+		<xsl:if test="$td!=''">
+			<xsl:for-each select="document($td)//block[@name=current()/@name]">
+				<xsl:attribute name="tech-domain"><xsl:value-of select="@tech_domain"/></xsl:attribute>
+			</xsl:for-each>
+		</xsl:if>
+		<xsl:apply-templates select="*|comment()"/>
+	</package>
+</xsl:template>
+
+
+<xsl:template match="component">
+	<xsl:copy>
+		<xsl:apply-templates select="@name|@long-name|@deprecated|@introduced|@filter|@purpose"/>
+		<xsl:call-template name="class">
+			<xsl:with-param name="remove">placeholder PC test</xsl:with-param>
+			<xsl:with-param name="add">
+				<xsl:if test="@plugin='Y'">plugin</xsl:if>
+			</xsl:with-param>
+		</xsl:call-template>
+		<xsl:if test="contains(concat(' ',@class,' '),' PC ')">
+			<xsl:attribute name="target">desktop</xsl:attribute>
+		</xsl:if>
+		<xsl:apply-templates select="*|comment()"/>		
+	</xsl:copy>
+</xsl:template>
+
+<xsl:template match="unit">
+	<xsl:copy>
+		<xsl:apply-templates select="@*"/>
+	</xsl:copy>
+</xsl:template>
+
+<xsl:template match="@levels|@level|@span|@deprecated|@introduced|@filter|unit/@*|comment()|@purpose">
+	<xsl:copy-of select="."/>
+</xsl:template>
+
+<xsl:template match="unit/@mrp|unit/@bldFile">
+	<xsl:attribute name="{name()}"><xsl:if test="not(starts-with(.,'/'))">/</xsl:if><xsl:value-of select="."/></xsl:attribute>
+</xsl:template>
+
+<xsl:template name="class"><xsl:param name="remove"/><xsl:param name="add"/>
+	<xsl:param name="class" select="normalize-space(@class)"/>
+	<xsl:variable name="r">
+		<xsl:text> </xsl:text>
+		<xsl:choose>
+			<xsl:when test="contains($remove,' ')"><xsl:value-of select="substring-before($remove,' ')"/></xsl:when>
+			<xsl:otherwise><xsl:value-of select="$remove"/></xsl:otherwise>
+		</xsl:choose>
+		<xsl:text> </xsl:text>
+	</xsl:variable>
+	<xsl:variable name="c">
+		<xsl:choose>
+			<xsl:when test="contains(concat(' ',$class,' '),$r)">
+				<xsl:value-of select="substring-before(concat(' ',$class,' '),$r)"/>
+				<xsl:text> </xsl:text>
+				<xsl:value-of select="substring-after(concat(' ',$class,' '),$r)"/>
+			</xsl:when>
+			<xsl:otherwise><xsl:value-of select="$class"/></xsl:otherwise>
+		</xsl:choose>
+		<xsl:if test="normalize-space($add)!=''"><xsl:value-of select="concat(' ',normalize-space($add))"/></xsl:if>
+	</xsl:variable>
+	<xsl:choose>
+		<xsl:when test="contains($remove,' ')">
+			<xsl:call-template name="class">
+				<xsl:with-param name="remove" select="substring-after($remove,' ')"/>
+				<xsl:with-param name="class" select="$c"/>
+			</xsl:call-template>
+		</xsl:when>
+		<xsl:when test="normalize-space($c)!=''">
+			<xsl:attribute name="class">
+				<xsl:value-of select="normalize-space($c)"/>
+			</xsl:attribute>
+		</xsl:when>
+	</xsl:choose>
+</xsl:template>
+
+<xsl:template match="@tech_domain" priority="5">
+	<xsl:attribute name="tech-domain"><xsl:value-of select="."/></xsl:attribute>
+</xsl:template>
+
+<xsl:template name="DTD">
+<xsl:text disable-output-escaping="yes"><![CDATA[]]></xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>