Simplify and add hacks for some XSLT processors: simpler xpath expressions in filtering.xsl and qt hack in mergesysdef.xsl. Move path processing XSLT templates to separate module so it can be used in both joining and merging. Add .bat files for each of the PERL and XSLT scripts so they can be more esily called from the command line (joinsysdef.bat calls joinsysdef.pl, not joinsysdef.xsl). HighFidelityModel
authorBob Rosenberg <bob.rosenberg@nokia.com>
Thu, 22 Jul 2010 12:30:22 +0100
branchHighFidelityModel
changeset 390 a47fc547d2e3
parent 350 4811411c8b66
child 392 123b46675fea
Simplify and add hacks for some XSLT processors: simpler xpath expressions in filtering.xsl and qt hack in mergesysdef.xsl. Move path processing XSLT templates to separate module so it can be used in both joining and merging. Add .bat files for each of the PERL and XSLT scripts so they can be more esily called from the command line (joinsysdef.bat calls joinsysdef.pl, not joinsysdef.xsl).
sysdeftools/filter-module.xsl
sysdeftools/filtering.bat
sysdeftools/joinsysdef-module.xsl
sysdeftools/joinsysdef.bat
sysdeftools/mergesysdef-module.xsl
sysdeftools/mergesysdef.bat
sysdeftools/mergesysdef.xsl
sysdeftools/path-module.xsl
sysdeftools/readme.txt
sysdeftools/rootsysdef.bat
sysdeftools/sysdefdowngrade.bat
sysdeftools/validate/checklinks.bat
sysdeftools/validate/validate-sysdef.bat
--- a/sysdeftools/filter-module.xsl	Tue Jul 20 11:48:29 2010 +0100
+++ b/sysdeftools/filter-module.xsl	Thu Jul 22 12:30:22 2010 +0100
@@ -46,7 +46,7 @@
 <!-- filter-has =  item's @filter must have all filters in the list. ie it can have any other filters, but these must all be present	
 -->
 <xsl:template match="filter-has" mode="filter"><xsl:param name="item"/>
-	<xsl:if test="$item[(self::component or self::unit)  and not(unit/@filter or self::unit[not(../unit[@filter])])]">
+	<xsl:if test="$item[self::component and not(unit/@filter)] or $item[self::unit and ../unit/@filter]">
 		<xsl:variable name="my-filters">
 			<xsl:call-template name="filter-list">
 				<xsl:with-param name="f" select="$item/parent::component/@filter"/>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysdeftools/filtering.bat	Thu Jul 22 12:30:22 2010 +0100
@@ -0,0 +1,16 @@
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+@setlocal
+@ java -jar %~dp0xalan.jar -xsl %~dpn0.xsl %* 
--- a/sysdeftools/joinsysdef-module.xsl	Tue Jul 20 11:48:29 2010 +0100
+++ b/sysdeftools/joinsysdef-module.xsl	Thu Jul 22 12:30:22 2010 +0100
@@ -488,96 +488,7 @@
 <xsl:template match="@*|comment()" mode="join"><xsl:copy-of select="."/></xsl:template>
 
 
-<!-- path handling follows -->
-
- <xsl:template name="lastbefore"><xsl:param name="string"/><xsl:param name="substr" select="'/'"/>
-        <xsl:if test="contains($string,$substr)">
-                <xsl:value-of select="substring-before($string,$substr)"/>
-                <xsl:if test="contains(substring-after($string,$substr),$substr)">
-	                <xsl:value-of select="$substr"/>
-	              </xsl:if>
-        <xsl:call-template name="lastbefore">
-                <xsl:with-param name="string" select="substring-after($string,$substr)"/>
-                <xsl:with-param name="substr" select="$substr"/>
-        </xsl:call-template>
-        </xsl:if>
-</xsl:template>
-
- <xsl:template name="joinpath"><xsl:param name="file"/><xsl:param name="rel"/>
-	<xsl:choose>
-		<xsl:when test="(contains($rel,'://') and not(contains(substring-before($rel,'://'),'/'))) or starts-with($rel,'/')"> <!-- absolute URI or absolute path-->
-			<xsl:value-of select="$rel"/>
-		</xsl:when>
-		<xsl:otherwise> <!-- relative link -->
-			<xsl:call-template name="reducepath">
-				<xsl:with-param name="file">
-					<xsl:call-template name="lastbefore">
-						<xsl:with-param name="string" select="$file"/>
-					</xsl:call-template>
-					<xsl:text>/</xsl:text>
-					<xsl:value-of select="$rel"/>
-				</xsl:with-param>
-			</xsl:call-template>
-		</xsl:otherwise>
-	</xsl:choose>
- </xsl:template>
-
-<xsl:template name="reducepath"><xsl:param name="file"/>
-	<xsl:call-template name="reducedotdotpath">
-    	<xsl:with-param name="file">
-			<xsl:call-template name="reducedotpath">
-		    	<xsl:with-param name="file" select="$file"/>
-		    </xsl:call-template>
-		</xsl:with-param>
-	</xsl:call-template>
-</xsl:template>
-
-<xsl:template name="reducedotdotpath"><xsl:param name="file"/>
-	<xsl:choose>
-		<xsl:when test="starts-with($file,'../')">
-			<xsl:text>../</xsl:text>
-			<xsl:call-template name="reducedotdotpath">
-        		<xsl:with-param name="file" select="substring($file,4)"/>
-			</xsl:call-template>
-		</xsl:when>
-		<xsl:when test="contains($file,'/../')">							
-			<xsl:call-template name="reducepath">
-        		<xsl:with-param name="file">
-			        <xsl:call-template name="lastbefore">
-			                <xsl:with-param name="string" select="substring-before($file,'/../')"/>
-			        </xsl:call-template>
-			        <xsl:text>/</xsl:text>
-					<xsl:value-of select="substring-after($file,'/../')"/>
-				</xsl:with-param>
-			</xsl:call-template>
-		</xsl:when>
-		<xsl:otherwise><xsl:value-of select="$file"/></xsl:otherwise>
-	</xsl:choose>
- </xsl:template>
-
-<xsl:template name="reducedotpath"><xsl:param name="file"/>
-	<xsl:choose>	
-		<xsl:when test="starts-with($file,'./')">
-			<xsl:call-template name="reducedotpath">
-        		<xsl:with-param name="file" select="substring($file,3)"/>
-			</xsl:call-template>
-		</xsl:when>
-
-		<xsl:when test="contains($file,'/./')">
-			<xsl:call-template name="reducepath">
-        		<xsl:with-param name="file">
-	                <xsl:value-of select="substring-before($file,'/./')"/>
-			        <xsl:text>/</xsl:text>
-					<xsl:value-of select="substring-after($file,'/./')"/>
-				</xsl:with-param>
-			</xsl:call-template>
-		</xsl:when>
-		<xsl:when test="substring($file,string-length($file) - 1) = '/.'">
-           <xsl:value-of select="substring($file,1,string-length($file) - 2)"/>
-		</xsl:when>
-		<xsl:otherwise><xsl:value-of select="$file"/></xsl:otherwise>
-	</xsl:choose>
- </xsl:template>
+<xsl:include href="path-module.xsl"/>
 
 <!-- overridable templates follow -->
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysdeftools/joinsysdef.bat	Thu Jul 22 12:30:22 2010 +0100
@@ -0,0 +1,17 @@
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+@setlocal
+@perl %~dpn0.pl %*
+
--- a/sysdeftools/mergesysdef-module.xsl	Tue Jul 20 11:48:29 2010 +0100
+++ b/sysdeftools/mergesysdef-module.xsl	Thu Jul 22 12:30:22 2010 +0100
@@ -10,7 +10,10 @@
 	Nokia Corporation - initial contribution.
 	Contributors:
 	Description:
-	XSLT module for merging only two sysdef files according to the 3.0.0 rules. Old syntax not supported and must be converetd before calling.
+	XSLT module for merging only two sysdef files according to the 3.0.1 rules. 
+		2.x and older syntax not supported and must be converetd before calling.
+
+		Requires the including XSLT to also include path-module.xsl
 -->
 	
 <xsl:variable name="defaultnamespace">http://www.symbian.org/system-definition</xsl:variable>
@@ -290,7 +293,7 @@
 					don't copy if the before ID is found in $base	-->
 				<xsl:apply-templates mode="merge-copy-of" select="$to-sort[1]">
 					<xsl:with-param name="origin" select="$down"/>
-					<xsl:with-param name="root" select="$end/ancestor::systemModel"/>
+					<xsl:with-param name="root" select="$end/ancestor::SystemDefinition"/>
 				</xsl:apply-templates>
 			</xsl:if>			
 		<xsl:call-template name="copy-sorted-content">
@@ -381,7 +384,7 @@
 			<!-- if the removed item is in the downstream doc, just copy that and ignore the upstream contents -->
 			<xsl:apply-templates mode="merge-copy-of" select="$match">
 				<xsl:with-param name="origin" select="$down"/>
-				<xsl:with-param name="root" select="$this/ancestor::systemModel"/>			
+				<xsl:with-param name="root" select="$this/ancestor::SystemDefinition"/>			
 				<xsl:with-param name="replaces" select="$replaces"/>
 			</xsl:apply-templates>		
 		</xsl:when>
@@ -407,7 +410,7 @@
 		<!-- if this is the first item in other that's also in this, then put all new items from other here -->
 		<xsl:apply-templates mode="merge-copy-of" select="$match/preceding-sibling::*[@id and not(@before)]">
 			<xsl:with-param name="origin" select="$down"/>
-			<xsl:with-param name="root" select="$this/ancestor::systemModel"/>	
+			<xsl:with-param name="root" select="$this/ancestor::SystemDefinition"/>	
 			<xsl:with-param name="replaces" select="$replaces"/>
 		</xsl:apply-templates>
 	</xsl:when>
@@ -417,7 +420,7 @@
 	<xsl:apply-templates mode="merge-copy-of" select="$other/*[@before=current()/@id]">
 		<xsl:with-param name="remove-before" select="1"/>
 		<xsl:with-param name="origin" select="$down"/>
-		<xsl:with-param name="root" select="$this/ancestor::systemModel"/>	
+		<xsl:with-param name="root" select="$this/ancestor::SystemDefinition"/>	
 		<xsl:with-param name="replaces" select="$replaces"/>
 	</xsl:apply-templates>
 
@@ -476,7 +479,7 @@
 					<xsl:if test="not($this/*[@id=current()/@id])">
 						<xsl:apply-templates mode="merge-copy-of" select=".">
 							<xsl:with-param name="origin" select="$down"/>
-							<xsl:with-param name="root" select="$this/ancestor::systemModel"/>			
+							<xsl:with-param name="root" select="$this/ancestor::SystemDefinition"/>			
 							<xsl:with-param name="replaces" select="$replaces"/>
 						</xsl:apply-templates>
 					</xsl:if>
@@ -492,7 +495,7 @@
 		<!-- for the last layer, tack on any remaining layers -->
 		<xsl:apply-templates mode="merge-copy-of" select="$other/layer[not(@before) and not(following-sibling::*[@id=$this/../layer/@id]) and not(@id=$this/../layer/@id)]">
 			<xsl:with-param name="origin" select="$down"/>
-			<xsl:with-param name="root" select="$this/ancestor::systemModel"/>			
+			<xsl:with-param name="root" select="$this/ancestor::SystemDefinition"/>			
 			<xsl:with-param name="replaces" select="$replaces"/>
 		</xsl:apply-templates>		
 	</xsl:if>
@@ -505,7 +508,6 @@
 	<xsl:param name="origin"/>	<!--the element containing the @name to use the origin-model attribute  -->
 	<xsl:param name="root"/> 	<!--the systemModel element in the upstream doc  -->
 	<xsl:param name="replaces" select="ancestor::SystemDefinition/descendant::*[(self::component or self::collection or self::package or self::layer) and not(ancestor::meta)]/@replace"/> <!-- recalculate this is necessarfy, but should just pass down as a param -->
-
 	<xsl:variable name="moved" select="$root/descendant::*[name()=name(current()/..) and @id!=current()/../@id]/*[@id=current()/@id]"/>
 	<xsl:choose>
 		<!-- this might slow things down, consider making optional -->
@@ -543,8 +545,6 @@
 		</xsl:otherwise>
 	</xsl:choose>
 </xsl:template>
-
-
 <xsl:template match="comment()|@*" mode="merge-copy-of">
 	<xsl:copy-of select="."/>
 </xsl:template>
@@ -553,6 +553,7 @@
 <xsl:template name="merge-copy-of-atts">
 	<xsl:param name="remove-before" select="0"/> <!-- set to true if any before attribute is to be removed -->
 	<xsl:param name="root"/> 	<!--the systemModel element in the upstream doc  -->
+	
 	<xsl:choose>
 		<xsl:when test="$remove-before">
 			<xsl:copy-of select="@*[name()!='before' and name()!='replace']"/>
@@ -613,7 +614,21 @@
 
 
 
-<xsl:template match="unit/@bldFile | unit/@mrp | unit/@bldfile" mode="merge-copy-of">
+
+<xsl:template match="meta" mode="merge-copy-of">
+	<xsl:param name="origin"/>	<!--the element containing the @name to use the origin-model attribute  -->
+	<xsl:param name="root"/> 	<!--the systemModel element in the upstream doc  -->
+	<xsl:copy>
+		<xsl:apply-templates select="@*" mode="merge-copy-of">
+			<xsl:with-param name="origin" select="$origin"/>
+			<xsl:with-param name="root" select="$root"/>
+		</xsl:apply-templates>
+		<xsl:copy-of select="node()"/>
+	</xsl:copy>
+</xsl:template>
+
+
+<xsl:template match="unit/@bldFile | unit/@mrp | unit/@base | meta/@href" mode="merge-copy-of">
 	<xsl:param name="origin" select="/.."/>	<!--the element containing the @name to use the origin-model attribute  -->
 
 	<xsl:attribute name="{name()}">
@@ -627,28 +642,12 @@
 				<xsl:value-of select="."/>
 			</xsl:when>
 		<xsl:otherwise> <!-- relative link -->
-			<xsl:call-template name="lastbefore">
-				<xsl:with-param name="string" select="$origin/@pathto"/>
-			</xsl:call-template>/<xsl:value-of select="."/>
+			<xsl:call-template name="joinpath">
+				<xsl:with-param name="file" select="$origin/@pathto"/>
+				<xsl:with-param name="rel" select="."/>
+			</xsl:call-template>
 		</xsl:otherwise>
 		</xsl:choose>
 	</xsl:attribute>
 </xsl:template>
-
-
-<!-- path handling follows -->
-
- <xsl:template name="lastbefore"><xsl:param name="string"/><xsl:param name="substr" select="'/'"/>
-        <xsl:if test="contains($string,$substr)">
-                <xsl:value-of select="substring-before($string,$substr)"/>
-                <xsl:if test="contains(substring-after($string,$substr),$substr)">
-	                <xsl:value-of select="$substr"/>
-	              </xsl:if>
-        <xsl:call-template name="lastbefore">
-                <xsl:with-param name="string" select="substring-after($string,$substr)"/>
-                <xsl:with-param name="substr" select="$substr"/>
-        </xsl:call-template>
-        </xsl:if>
-</xsl:template>
-
 </xsl:stylesheet>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysdeftools/mergesysdef.bat	Thu Jul 22 12:30:22 2010 +0100
@@ -0,0 +1,16 @@
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+@setlocal
+@ java -jar %~dp0xalan.jar -xsl %~dpn0.xsl %*  -XSLTC
--- a/sysdeftools/mergesysdef.xsl	Tue Jul 20 11:48:29 2010 +0100
+++ b/sysdeftools/mergesysdef.xsl	Thu Jul 22 12:30:22 2010 +0100
@@ -119,5 +119,14 @@
 	</xsl:choose>
 </xsl:template>
 
+<xsl:include href="path-module.xsl"/>
 <xsl:include href="mergesysdef-module.xsl"/>
+
+<xsl:template match="@*[local-name()='proFile' or local-name()='qmakeArgs'  or namespace-uri()='qt']" mode="merge-copy-of">
+	<!-- this fixes a xalan-j bug where it changes the namespace in the merged model to just "qt"-->
+	<xsl:attribute name="{local-name()}" namespace="http://www.nokia.com/qt">
+		<xsl:value-of select="."/>
+	</xsl:attribute>
+</xsl:template>
+
 </xsl:stylesheet>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysdeftools/path-module.xsl	Thu Jul 22 12:30:22 2010 +0100
@@ -0,0 +1,110 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<!--Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+	All rights reserved.
+	This component and the accompanying materials are made available
+	under the terms of the License "Eclipse Public License v1.0"
+	which accompanies this distribution, and is available
+	at the URL "http://www.eclipse.org/legal/epl-v10.html".
+
+	Initial Contributors:
+	Nokia Corporation - initial contribution.
+	Contributors:
+	Description:
+	XSLT module which contains named templates which process file paths
+-->
+
+ <xsl:template name="lastbefore"><xsl:param name="string"/><xsl:param name="substr" select="'/'"/>
+        <xsl:if test="contains($string,$substr)">
+                <xsl:value-of select="substring-before($string,$substr)"/>
+                <xsl:if test="contains(substring-after($string,$substr),$substr)">
+	                <xsl:value-of select="$substr"/>
+	              </xsl:if>
+        <xsl:call-template name="lastbefore">
+                <xsl:with-param name="string" select="substring-after($string,$substr)"/>
+                <xsl:with-param name="substr" select="$substr"/>
+        </xsl:call-template>
+        </xsl:if>
+</xsl:template>
+
+ <xsl:template name="joinpath"><xsl:param name="file"/><xsl:param name="rel"/>
+	<xsl:choose>
+		<xsl:when test="(contains($rel,'://') and not(contains(substring-before($rel,'://'),'/'))) or starts-with($rel,'/')"> <!-- absolute URI or absolute path-->
+			<xsl:value-of select="$rel"/>
+		</xsl:when>
+		<xsl:otherwise> <!-- relative link -->
+			<xsl:call-template name="reducepath">
+				<xsl:with-param name="file">
+					<xsl:call-template name="lastbefore">
+						<xsl:with-param name="string" select="$file"/>
+					</xsl:call-template>
+					<xsl:text>/</xsl:text>
+					<xsl:value-of select="$rel"/>
+				</xsl:with-param>
+			</xsl:call-template>
+		</xsl:otherwise>
+	</xsl:choose>
+ </xsl:template>
+
+<xsl:template name="reducepath"><xsl:param name="file"/>
+	<xsl:call-template name="reducedotdotpath">
+    	<xsl:with-param name="file">
+			<xsl:call-template name="reducedotpath">
+		    	<xsl:with-param name="file" select="$file"/>
+		    </xsl:call-template>
+		</xsl:with-param>
+	</xsl:call-template>
+</xsl:template>
+
+<xsl:template name="reducedotdotpath"><xsl:param name="file"/>
+	<xsl:variable name="pre">
+		<xsl:call-template name="lastbefore">
+			    <xsl:with-param name="string" select="substring-before($file,'/../')"/>
+		</xsl:call-template>
+	</xsl:variable>
+	<xsl:choose>
+		<xsl:when test="starts-with($file,'../')">
+			<xsl:text>../</xsl:text>
+			<xsl:call-template name="reducedotdotpath">
+        		<xsl:with-param name="file" select="substring($file,4)"/>
+			</xsl:call-template>
+		</xsl:when>
+		<xsl:when test="contains($file,'/../') and $pre='' and not(starts-with($file,'/'))"> <!-- if file is a relative path and the dotdots go up to the top dir, don't start with a slash -->
+			<xsl:call-template name="reducepath">
+        		<xsl:with-param name="file" select="substring-after($file,'/../')"/>
+			</xsl:call-template>
+		</xsl:when>
+		<xsl:when test="contains($file,'/../')">
+			<xsl:call-template name="reducepath">
+        		<xsl:with-param name="file" select="concat($pre,'/',substring-after($file,'/../'))"/>
+			</xsl:call-template>
+		</xsl:when>
+		<xsl:otherwise><xsl:value-of select="$file"/></xsl:otherwise>
+	</xsl:choose>
+ </xsl:template>
+
+<xsl:template name="reducedotpath"><xsl:param name="file"/>
+	<xsl:choose>	
+		<xsl:when test="starts-with($file,'./')">
+			<xsl:call-template name="reducedotpath">
+        		<xsl:with-param name="file" select="substring($file,3)"/>
+			</xsl:call-template>
+		</xsl:when>
+
+		<xsl:when test="contains($file,'/./')">
+			<xsl:call-template name="reducepath">
+        		<xsl:with-param name="file">
+	                <xsl:value-of select="substring-before($file,'/./')"/>
+			        <xsl:text>/</xsl:text>
+					<xsl:value-of select="substring-after($file,'/./')"/>
+				</xsl:with-param>
+			</xsl:call-template>
+		</xsl:when>
+		<xsl:when test="substring($file,string-length($file) - 1) = '/.'">
+           <xsl:value-of select="substring($file,1,string-length($file) - 2)"/>
+		</xsl:when>
+		<xsl:otherwise><xsl:value-of select="$file"/></xsl:otherwise>
+	</xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
--- a/sysdeftools/readme.txt	Tue Jul 20 11:48:29 2010 +0100
+++ b/sysdeftools/readme.txt	Thu Jul 22 12:30:22 2010 +0100
@@ -1,28 +1,36 @@
 Filtering tools: 
 filtering.xsl - Filter a sysdef in the 2.0 or 3.0 syntax
+filtering.bat - Call filtering.xsl using xalan-j
 	filter-module.xsl - XSLT module which contains the logic to process the filter attribute in the system definition
 
 Joining tools: 
 joinsysdef.pl - Create a stand-alone sysdef from a linked set of fragments. Supports confguring via an .hrh file.
+joinsysdef.bat - Call joinsysdef.pl
 joinsysdef.xsl - Create a stand-alone sysdef from a linked set of fragments
 joinandparesysdef.xsl - Create a stand-alone sysdef from a linked set of fragments, paring down to just a set of items of the desired rank.
 	joinsysdef-module.xsl - XSLT module which contains the logic to join a system definition file
 
 Merging tools: 
 mergesysdef.xsl - Merge two 3.x syntax stand-alone system definitions
+mergesysdef.bat - Call mergesysdef.xsl using xalan-j
 	mergesysdef-module.xsl - XSLT module for merging only two sysdef files according to the 3.0.0 rules
 
 Other tools:
-sysdefdowngrade.xsl - Convert a 3.0.0 sysdef to 2.0.1 sytnax
+sysdefdowngrade.xsl - Convert a 3.0.x sysdef to 2.0.1 sytnax
+sysdefdowngrade.bat - Call sysdefdowngrade.xsl using xalan-j
 rootsysdef.pl - Generate a root system definition from a template root sysdef and a set of wildcard paths to look for pkgdef files
+rootsysdef.bat - Call rootsysdef.pl
 
 XSLT Processing:
 xalan.jar
 xercesImpl.jar
 xml-apis.jar
+serializer.jar
 
 Validation tools:
 validate/checklinks.pl - check all referenced files in units exist at the specified locations
-validate/modelcheck.xsl - Validate a sysdef file, reporting any errors in HTML format. Can validate a sysdef in a web browser by using <?xml-stylesheet type="text/xsl" href="modelcheck.xsl"?>
+validate/checklinks.bat - call checklinks.pl
+validate/modelcheck.xsl - Validate a sysdef file, reporting any errors in HTM format. Can validate a sysdef in a web browser by using <?xml-stylesheet type="text/xsl" href="modelcheck.xsl"?>
 validate/validate-sysdef.xsl - Validate a sysdef file, reporting any errors as plain text
+validate/validate-sysdef.bat - Call validate-sysdef.xsl using xalan-j
 	validate/test-model.xsl - common module which actually does the validation
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysdeftools/rootsysdef.bat	Thu Jul 22 12:30:22 2010 +0100
@@ -0,0 +1,17 @@
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+@setlocal
+@perl %~dpn0.pl %*
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysdeftools/sysdefdowngrade.bat	Thu Jul 22 12:30:22 2010 +0100
@@ -0,0 +1,16 @@
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+@setlocal
+@ java -jar %~dp0xalan.jar -xsl %~dpn0.xsl %*  -XSLTC
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysdeftools/validate/checklinks.bat	Thu Jul 22 12:30:22 2010 +0100
@@ -0,0 +1,17 @@
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+@setlocal
+@perl %~dpn0.pl %*
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysdeftools/validate/validate-sysdef.bat	Thu Jul 22 12:30:22 2010 +0100
@@ -0,0 +1,16 @@
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+@setlocal
+@ java -jar %~dp0..\xalan.jar   -xsl %~dpn0.xsl %*