buildframework/helium/external/helium-antlib/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/mergesysdef.xsl
author wbernard
Wed, 23 Dec 2009 19:29:07 +0200
changeset 179 d8ac696cc51f
permissions -rw-r--r--
helium_7.0-r14027
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
179
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     1
<!-- 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     2
============================================================================ 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     3
Name        : mergesysdef.xsl 
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     4
Part of     : Helium AntLib
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     5
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     6
Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     7
All rights reserved.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     8
This component and the accompanying materials are made available
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     9
under the terms of the License "Eclipse Public License v1.0"
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    10
which accompanies this distribution, and is available
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    11
at the URL "http://www.eclipse.org/legal/epl-v10.html".
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    12
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    13
Initial Contributors:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    14
Nokia Corporation - initial contribution.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    15
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    16
Contributors:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    17
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    18
Description:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    19
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    20
============================================================================
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    21
-->
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    22
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common">
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    23
	<xsl:output method="xml" indent="yes"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    24
	<xsl:param name="Downstream">mcl/System_Definition_Template.xml</xsl:param>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    25
	 <xsl:key name="origin" match="component" use="@origin-model"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    26
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    27
<!-- only supports 3.x syntax and only operates on stand-alone models -->
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    28
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    29
<xsl:variable name="downstream" select="document($Downstream,.)/SystemDefinition"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    30
<xsl:param name="upname">
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    31
	<xsl:choose>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    32
		<xsl:when test="$downstream[starts-with(@schema,'2.') or starts-with(@schema,'1.')  or not(systemModel)]">
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    33
			<xsl:message terminate="yes">Syntax <xsl:value-of select="@schema"/> not supported</xsl:message>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    34
		</xsl:when>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    35
		<xsl:when test="/SystemDefinition/systemModel/@name=$downstream/systemModel/@name">
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    36
			<xsl:apply-templates mode="origin-term" select="/*">
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    37
				<xsl:with-param name="root">Upstream</xsl:with-param>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    38
			</xsl:apply-templates>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    39
			</xsl:when>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    40
		<xsl:otherwise><xsl:value-of select="/SystemDefinition/systemModel/@name"/></xsl:otherwise>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    41
	</xsl:choose>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    42
</xsl:param>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    43
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    44
<xsl:param name="downname">
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    45
	<xsl:choose>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    46
		<xsl:when test="/SystemDefinition/systemModel/@name=$downstream/systemModel/@name">
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    47
			<xsl:apply-templates mode="origin-term" select="$downstream">	
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    48
				<xsl:with-param name="root">Downstream</xsl:with-param>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    49
			</xsl:apply-templates>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    50
			</xsl:when>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    51
		<xsl:otherwise><xsl:value-of select="$downstream/systemModel/@name"/></xsl:otherwise>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    52
	</xsl:choose>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    53
</xsl:param>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    54
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    55
<xsl:template mode="origin-term" match="*">
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    56
	<xsl:param name="root"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    57
	<xsl:param name="index"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    58
	<xsl:choose>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    59
		<xsl:when test="not(key('origin',concat($root,$index)))">
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    60
			<xsl:value-of select="concat($root,$index)"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    61
		</xsl:when>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    62
		<xsl:when test="$index=''">
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    63
			<xsl:apply-templates mode="origin-term" select=".">	
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    64
				<xsl:with-param name="root" select="$root"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    65
				<xsl:with-param name="index" select="1"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    66
			</xsl:apply-templates>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    67
		</xsl:when>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    68
		<xsl:otherwise>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    69
			<xsl:apply-templates mode="origin-term" select=".">	
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    70
				<xsl:with-param name="root" select="$root"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    71
				<xsl:with-param name="index" select="$index + 1"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    72
			</xsl:apply-templates>		
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    73
		</xsl:otherwise>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    74
	</xsl:choose>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    75
</xsl:template>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    76
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    77
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    78
<!--  this merge only two files according to the 3.0.0 rules. Old syntax not supported. Must be converetd before calling -->
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    79
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    80
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    81
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    82
<xsl:template match="/*">
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    83
	<xsl:variable name="upmodel">
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    84
		<sysdef name="{$upname}"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    85
	</xsl:variable>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    86
	<xsl:variable name="downmodel">
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    87
		<sysdef name="{$downname}"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    88
	</xsl:variable>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    89
	
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    90
	<xsl:choose>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    91
		<xsl:when test="function-available('exslt:node-set')">
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    92
			<xsl:apply-templates mode="merge-models" select=".">
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    93
				<xsl:with-param name="other" select="$downstream"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    94
				<xsl:with-param name="up" select="exslt:node-set($upmodel)/sysdef"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    95
				<xsl:with-param name="down" select="exslt:node-set($downmodel)/sysdef"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    96
			</xsl:apply-templates>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    97
		</xsl:when>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    98
		<xsl:otherwise> <!-- no node set funcion, so don't bother setting the names -->
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    99
			<xsl:apply-templates mode="merge-models" select=".">
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   100
				<xsl:with-param name="other" select="$downstream"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   101
			</xsl:apply-templates> 		
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   102
		</xsl:otherwise>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   103
	</xsl:choose>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   104
</xsl:template>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   105
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   106
<xsl:include href="mergesysdef-module.xsl"/>
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   107
</xsl:stylesheet>