1*1212f9a0SAndroid Build Coastguard Worker<xsl:stylesheet version="1.0" 2*1212f9a0SAndroid Build Coastguard Worker xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 3*1212f9a0SAndroid Build Coastguard Worker xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect" 4*1212f9a0SAndroid Build Coastguard Worker extension-element-prefixes="redirect"> 5*1212f9a0SAndroid Build Coastguard Worker<!-- Reproducing Bugzilla 3489 --> 6*1212f9a0SAndroid Build Coastguard Worker <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="yes"/> 7*1212f9a0SAndroid Build Coastguard Worker <xsl:strip-space elements="*"/> 8*1212f9a0SAndroid Build Coastguard Worker <xsl:param name="output-dir"/> 9*1212f9a0SAndroid Build Coastguard Worker <xsl:template match="*|@*"/> 10*1212f9a0SAndroid Build Coastguard Worker <xsl:template match="/workspace"> 11*1212f9a0SAndroid Build Coastguard Worker <xsl:apply-templates/> 12*1212f9a0SAndroid Build Coastguard Worker </xsl:template> 13*1212f9a0SAndroid Build Coastguard Worker 14*1212f9a0SAndroid Build Coastguard Worker 15*1212f9a0SAndroid Build Coastguard Worker <xsl:template match="/workspace/project"> 16*1212f9a0SAndroid Build Coastguard Worker <xsl:variable name="basedir" select="/workspace/@basedir"/> 17*1212f9a0SAndroid Build Coastguard Worker <xsl:variable name="outputdir" select="/workspace/@outputdir"/> 18*1212f9a0SAndroid Build Coastguard Worker <xsl:variable name="cvsdir"> 19*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="concat(/workspace/@cvsdir, '/')"/> 20*1212f9a0SAndroid Build Coastguard Worker <xsl:choose> 21*1212f9a0SAndroid Build Coastguard Worker <xsl:when test="cvs/@module"> 22*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="cvs/@module"/> 23*1212f9a0SAndroid Build Coastguard Worker </xsl:when> 24*1212f9a0SAndroid Build Coastguard Worker <xsl:otherwise> 25*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="@srcdir"/> 26*1212f9a0SAndroid Build Coastguard Worker </xsl:otherwise> 27*1212f9a0SAndroid Build Coastguard Worker </xsl:choose> 28*1212f9a0SAndroid Build Coastguard Worker </xsl:variable> 29*1212f9a0SAndroid Build Coastguard Worker <xsl:message terminate="no"> 30*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="concat('Creating Gump buildfile for ', @name)"/> 31*1212f9a0SAndroid Build Coastguard Worker </xsl:message> 32*1212f9a0SAndroid Build Coastguard Worker 33*1212f9a0SAndroid Build Coastguard Worker <redirect:write file="{$outputdir}/{@name}-gumpbuild.xml"> 34*1212f9a0SAndroid Build Coastguard Worker <project name="{@name} Gump build file" default="gumpify" basedir="{$basedir}/{@srcdir}"> 35*1212f9a0SAndroid Build Coastguard Worker 36*1212f9a0SAndroid Build Coastguard Worker <!-- initialize time stamp and replace it in the html page --> 37*1212f9a0SAndroid Build Coastguard Worker <target name="init"> 38*1212f9a0SAndroid Build Coastguard Worker <tstamp> 39*1212f9a0SAndroid Build Coastguard Worker <format property="TIMESTAMP" pattern="HH:mm:ss"/> 40*1212f9a0SAndroid Build Coastguard Worker </tstamp> 41*1212f9a0SAndroid Build Coastguard Worker <replace file="{$outputdir}/status.xml" token="TAG-{@name}-TIME" value="${{TIMESTAMP}}"/> 42*1212f9a0SAndroid Build Coastguard Worker <touch file="{$outputdir}/{@name}.FAILED"/> 43*1212f9a0SAndroid Build Coastguard Worker 44*1212f9a0SAndroid Build Coastguard Worker <!--style in="{$basedir}/status.xml" 45*1212f9a0SAndroid Build Coastguard Worker out="{$basedir}/{@name}.html" 46*1212f9a0SAndroid Build Coastguard Worker destdir="{$basedir}" 47*1212f9a0SAndroid Build Coastguard Worker style="{$basedir}/source-index-style.xsl"> 48*1212f9a0SAndroid Build Coastguard Worker <param name="filename" expression="{@name}.xml"/> 49*1212f9a0SAndroid Build Coastguard Worker </style--> 50*1212f9a0SAndroid Build Coastguard Worker </target> 51*1212f9a0SAndroid Build Coastguard Worker 52*1212f9a0SAndroid Build Coastguard Worker <!-- check for all dependencies --> 53*1212f9a0SAndroid Build Coastguard Worker <target name="dependency-check"> 54*1212f9a0SAndroid Build Coastguard Worker <xsl:apply-templates select="depend" mode="dependency-check"/> 55*1212f9a0SAndroid Build Coastguard Worker </target> 56*1212f9a0SAndroid Build Coastguard Worker 57*1212f9a0SAndroid Build Coastguard Worker <!-- generate the dependency failure targets --> 58*1212f9a0SAndroid Build Coastguard Worker <xsl:apply-templates select="depend" mode="failed-dependency"/> 59*1212f9a0SAndroid Build Coastguard Worker 60*1212f9a0SAndroid Build Coastguard Worker <!-- generate the main target that does everything --> 61*1212f9a0SAndroid Build Coastguard Worker <target name="gumpify" depends="init,dependency-check" unless="dependency-failure"> 62*1212f9a0SAndroid Build Coastguard Worker <available file="{$cvsdir}" property="cvsmodule.{@name}.present"/> 63*1212f9a0SAndroid Build Coastguard Worker <echo message="In GUMP project: {@name}"/> 64*1212f9a0SAndroid Build Coastguard Worker <xsl:if test="cvs"> 65*1212f9a0SAndroid Build Coastguard Worker <antcall target="cvscheckout"/> 66*1212f9a0SAndroid Build Coastguard Worker <!--<antcall target="cvsupdate"/>--> 67*1212f9a0SAndroid Build Coastguard Worker <copy todir="{$basedir}/{@srcdir}"> 68*1212f9a0SAndroid Build Coastguard Worker <fileset dir="{$cvsdir}"/> 69*1212f9a0SAndroid Build Coastguard Worker </copy> 70*1212f9a0SAndroid Build Coastguard Worker </xsl:if> 71*1212f9a0SAndroid Build Coastguard Worker <replace file="{$outputdir}/status.xml" token="TAG-{@name}-CVS-TIME" value="${{TIMESTAMP}}"/> 72*1212f9a0SAndroid Build Coastguard Worker <antcall target="build"/> 73*1212f9a0SAndroid Build Coastguard Worker <antcall target="status-pages"/> 74*1212f9a0SAndroid Build Coastguard Worker <move file="{$outputdir}/{@name}.FAILED" tofile="{$outputdir}/{@name}.SUCCESS"/> 75*1212f9a0SAndroid Build Coastguard Worker </target> 76*1212f9a0SAndroid Build Coastguard Worker 77*1212f9a0SAndroid Build Coastguard Worker <xsl:apply-templates select="cvs"> 78*1212f9a0SAndroid Build Coastguard Worker <xsl:with-param name="target" select="'cvscheckout'"/> 79*1212f9a0SAndroid Build Coastguard Worker <xsl:with-param name="command" select="'-z3 checkout -P'"/> 80*1212f9a0SAndroid Build Coastguard Worker </xsl:apply-templates> 81*1212f9a0SAndroid Build Coastguard Worker 82*1212f9a0SAndroid Build Coastguard Worker <xsl:apply-templates select="cvs"> 83*1212f9a0SAndroid Build Coastguard Worker <xsl:with-param name="target" select="'cvsupdate'"/> 84*1212f9a0SAndroid Build Coastguard Worker <xsl:with-param name="command" select="'-z3 update -P -d -A'"/> 85*1212f9a0SAndroid Build Coastguard Worker </xsl:apply-templates> 86*1212f9a0SAndroid Build Coastguard Worker 87*1212f9a0SAndroid Build Coastguard Worker <!-- build targets --> 88*1212f9a0SAndroid Build Coastguard Worker <target name="build" depends="init"> 89*1212f9a0SAndroid Build Coastguard Worker <xsl:apply-templates select="ant | script"/> 90*1212f9a0SAndroid Build Coastguard Worker </target> 91*1212f9a0SAndroid Build Coastguard Worker 92*1212f9a0SAndroid Build Coastguard Worker <!-- called if the build went fine it sets the status to SUCCESS in the html file --> 93*1212f9a0SAndroid Build Coastguard Worker <target name="status-pages"> 94*1212f9a0SAndroid Build Coastguard Worker <replace file="{$outputdir}/status.xml" token="TAG-{@name}-STATUS" value="SUCCESS"/> 95*1212f9a0SAndroid Build Coastguard Worker <!-- <style in="" out="{/workspace/@basedir}/{@name}.html" style="" destdir="{/workspace/@basedir}"/> --> 96*1212f9a0SAndroid Build Coastguard Worker </target> 97*1212f9a0SAndroid Build Coastguard Worker </project> 98*1212f9a0SAndroid Build Coastguard Worker </redirect:write> 99*1212f9a0SAndroid Build Coastguard Worker </xsl:template> 100*1212f9a0SAndroid Build Coastguard Worker 101*1212f9a0SAndroid Build Coastguard Worker 102*1212f9a0SAndroid Build Coastguard Worker <!-- =========================================================================================== 103*1212f9a0SAndroid Build Coastguard Worker Execute a Ant build file/target as specified by the project 104*1212f9a0SAndroid Build Coastguard Worker =========================================================================================== --> 105*1212f9a0SAndroid Build Coastguard Worker <xsl:template match="/workspace/project/ant"> 106*1212f9a0SAndroid Build Coastguard Worker <!-- Ant build file directory --> 107*1212f9a0SAndroid Build Coastguard Worker <xsl:variable name="build.dir"> 108*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="concat(/workspace/@basedir, '/', ../@srcdir)"/> 109*1212f9a0SAndroid Build Coastguard Worker <xsl:if test="@basedir"> 110*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="concat('/', @basedir)"/> 111*1212f9a0SAndroid Build Coastguard Worker </xsl:if> 112*1212f9a0SAndroid Build Coastguard Worker </xsl:variable> 113*1212f9a0SAndroid Build Coastguard Worker 114*1212f9a0SAndroid Build Coastguard Worker <!-- copy project files --> 115*1212f9a0SAndroid Build Coastguard Worker <!--copy todir="{/workspace/@basedir}/{../@srcdir}"> 116*1212f9a0SAndroid Build Coastguard Worker <fileset dir="{/workspace/@viewdir}/{../@srcdir}"/> 117*1212f9a0SAndroid Build Coastguard Worker </copy--> 118*1212f9a0SAndroid Build Coastguard Worker 119*1212f9a0SAndroid Build Coastguard Worker <!-- execute the target needed to build the project --> 120*1212f9a0SAndroid Build Coastguard Worker <java classname="org.apache.tools.ant.Main" fork="yes" failonerror="yes" 121*1212f9a0SAndroid Build Coastguard Worker output="{/workspace/@outputdir}/{../@name}-buildresult.txt" 122*1212f9a0SAndroid Build Coastguard Worker dir="{$build.dir}"> 123*1212f9a0SAndroid Build Coastguard Worker 124*1212f9a0SAndroid Build Coastguard Worker <!-- transmit the worspace's properties --> 125*1212f9a0SAndroid Build Coastguard Worker <xsl:for-each select="/workspace/property"> 126*1212f9a0SAndroid Build Coastguard Worker <arg value="-D{@name}={@value}"/> 127*1212f9a0SAndroid Build Coastguard Worker </xsl:for-each> 128*1212f9a0SAndroid Build Coastguard Worker 129*1212f9a0SAndroid Build Coastguard Worker <!-- a buildfile might be specified otherwise Ant will use its default --> 130*1212f9a0SAndroid Build Coastguard Worker <xsl:if test="@buildfile"> 131*1212f9a0SAndroid Build Coastguard Worker <arg line="-buildfile {$build.dir}/{@buildfile}"/> 132*1212f9a0SAndroid Build Coastguard Worker </xsl:if> 133*1212f9a0SAndroid Build Coastguard Worker <arg line="-listener org.apache.tools.ant.XmlLogger -Dant.home={/workspace/@basedir}/dtools/ant -DXmlLogger.file={/workspace/@outputdir}/{../@name}-buildresult.xml"/> 134*1212f9a0SAndroid Build Coastguard Worker 135*1212f9a0SAndroid Build Coastguard Worker <!-- specific target name to perform the build --> 136*1212f9a0SAndroid Build Coastguard Worker <xsl:if test="@target"> 137*1212f9a0SAndroid Build Coastguard Worker <arg value="{@target}"/> 138*1212f9a0SAndroid Build Coastguard Worker </xsl:if> 139*1212f9a0SAndroid Build Coastguard Worker <xsl:apply-templates select="property"/> 140*1212f9a0SAndroid Build Coastguard Worker 141*1212f9a0SAndroid Build Coastguard Worker <!-- Do the classpath thing here --> 142*1212f9a0SAndroid Build Coastguard Worker <classpath> 143*1212f9a0SAndroid Build Coastguard Worker <xsl:for-each select="../depend | ../option"> 144*1212f9a0SAndroid Build Coastguard Worker <xsl:variable name="name" select="@project"/> 145*1212f9a0SAndroid Build Coastguard Worker <xsl:for-each select="/workspace/project[@name=$name]/jar"> 146*1212f9a0SAndroid Build Coastguard Worker <pathelement location="{../home}/{@name}"/> 147*1212f9a0SAndroid Build Coastguard Worker </xsl:for-each> 148*1212f9a0SAndroid Build Coastguard Worker </xsl:for-each> 149*1212f9a0SAndroid Build Coastguard Worker <pathelement path="${{java.class.path}}"/> 150*1212f9a0SAndroid Build Coastguard Worker </classpath> 151*1212f9a0SAndroid Build Coastguard Worker </java> 152*1212f9a0SAndroid Build Coastguard Worker </xsl:template> 153*1212f9a0SAndroid Build Coastguard Worker 154*1212f9a0SAndroid Build Coastguard Worker 155*1212f9a0SAndroid Build Coastguard Worker <!-- =========================================================================================== 156*1212f9a0SAndroid Build Coastguard Worker Execute a script 157*1212f9a0SAndroid Build Coastguard Worker =========================================================================================== --> 158*1212f9a0SAndroid Build Coastguard Worker <xsl:template match="/workspace/project/script"> 159*1212f9a0SAndroid Build Coastguard Worker <xsl:variable name="script.dir" select="concat(/workspace/@basedir, '/', ../@srcdir)"/> 160*1212f9a0SAndroid Build Coastguard Worker <xsl:variable name="script.sh" select="concat($script.dir, '/', ../@name, '.sh')"/> 161*1212f9a0SAndroid Build Coastguard Worker <chmod perm="ugo+rx" file="{$script.sh}"/> 162*1212f9a0SAndroid Build Coastguard Worker <exec dir="{$script.dir}" executable="{$script.sh}" 163*1212f9a0SAndroid Build Coastguard Worker output="{/workspace/@outputdir}/{../@name}-buildresult.txt"/> 164*1212f9a0SAndroid Build Coastguard Worker </xsl:template> 165*1212f9a0SAndroid Build Coastguard Worker 166*1212f9a0SAndroid Build Coastguard Worker 167*1212f9a0SAndroid Build Coastguard Worker <!-- =========================================================================================== 168*1212f9a0SAndroid Build Coastguard Worker CVS stuff, not sure what it is doing 169*1212f9a0SAndroid Build Coastguard Worker =========================================================================================== --> 170*1212f9a0SAndroid Build Coastguard Worker <xsl:template match="/workspace/project/cvs"> 171*1212f9a0SAndroid Build Coastguard Worker <xsl:param name="target"/> 172*1212f9a0SAndroid Build Coastguard Worker <xsl:param name="command"/> 173*1212f9a0SAndroid Build Coastguard Worker <xsl:variable name="repo" select="@repository"/> 174*1212f9a0SAndroid Build Coastguard Worker <xsl:variable name="cvsmodule.present" select="concat('cvsmodule.', ../@name, '.present')"/> 175*1212f9a0SAndroid Build Coastguard Worker <target name="{$target}"> 176*1212f9a0SAndroid Build Coastguard Worker <xsl:if test="$target='cvscheckout'"> 177*1212f9a0SAndroid Build Coastguard Worker <xsl:attribute name="unless"> 178*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="$cvsmodule.present"/> 179*1212f9a0SAndroid Build Coastguard Worker </xsl:attribute> 180*1212f9a0SAndroid Build Coastguard Worker </xsl:if> 181*1212f9a0SAndroid Build Coastguard Worker <xsl:if test="$target='cvsupdate'"> 182*1212f9a0SAndroid Build Coastguard Worker <xsl:attribute name="if"> 183*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="$cvsmodule.present"/> 184*1212f9a0SAndroid Build Coastguard Worker </xsl:attribute> 185*1212f9a0SAndroid Build Coastguard Worker </xsl:if> 186*1212f9a0SAndroid Build Coastguard Worker <replace file="{/workspace/@outputdir}/status.xml" token="TAG-{../@name}-CVS-TIME" value="${TIMESTAMP}"/> 187*1212f9a0SAndroid Build Coastguard Worker <cvs command="{$command}" quiet="true"> 188*1212f9a0SAndroid Build Coastguard Worker <xsl:attribute name="cvsroot"> 189*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="/workspace/cvs-repository/tree[@name=$repo]/@root"/> 190*1212f9a0SAndroid Build Coastguard Worker <xsl:if test="@dir"> 191*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="concat('/', @dir)"/> 192*1212f9a0SAndroid Build Coastguard Worker </xsl:if> 193*1212f9a0SAndroid Build Coastguard Worker </xsl:attribute> 194*1212f9a0SAndroid Build Coastguard Worker <xsl:attribute name="dest"> 195*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="/workspace/@cvsdir"/> 196*1212f9a0SAndroid Build Coastguard Worker </xsl:attribute> 197*1212f9a0SAndroid Build Coastguard Worker <xsl:attribute name="package"> 198*1212f9a0SAndroid Build Coastguard Worker <xsl:choose> 199*1212f9a0SAndroid Build Coastguard Worker <xsl:when test="@module"> 200*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="@module"/> 201*1212f9a0SAndroid Build Coastguard Worker </xsl:when> 202*1212f9a0SAndroid Build Coastguard Worker <xsl:otherwise> 203*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="../@name"/> 204*1212f9a0SAndroid Build Coastguard Worker </xsl:otherwise> 205*1212f9a0SAndroid Build Coastguard Worker </xsl:choose> 206*1212f9a0SAndroid Build Coastguard Worker </xsl:attribute> 207*1212f9a0SAndroid Build Coastguard Worker <xsl:if test="@tag"> 208*1212f9a0SAndroid Build Coastguard Worker <xsl:attribute name="tag"> 209*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="@tag"/> 210*1212f9a0SAndroid Build Coastguard Worker </xsl:attribute> 211*1212f9a0SAndroid Build Coastguard Worker </xsl:if> 212*1212f9a0SAndroid Build Coastguard Worker <xsl:attribute name="output"> 213*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="concat(/workspace/@outputdir, '/', ../@name, '-cvsresult.txt')"/> 214*1212f9a0SAndroid Build Coastguard Worker </xsl:attribute> 215*1212f9a0SAndroid Build Coastguard Worker </cvs> 216*1212f9a0SAndroid Build Coastguard Worker <replace file="{/workspace/@outputdir}/status.xml" token="TAG-{../@name}-CVS-STATUS" value="SUCCESS"/> 217*1212f9a0SAndroid Build Coastguard Worker </target> 218*1212f9a0SAndroid Build Coastguard Worker </xsl:template> 219*1212f9a0SAndroid Build Coastguard Worker 220*1212f9a0SAndroid Build Coastguard Worker 221*1212f9a0SAndroid Build Coastguard Worker <!-- =========================================================================================== 222*1212f9a0SAndroid Build Coastguard Worker Check for a dependency availability and immediately call its 223*1212f9a0SAndroid Build Coastguard Worker dependency-check related target. 224*1212f9a0SAndroid Build Coastguard Worker =========================================================================================== --> 225*1212f9a0SAndroid Build Coastguard Worker <xsl:template match="/workspace/project/depend" mode="dependency-check"> 226*1212f9a0SAndroid Build Coastguard Worker <xsl:variable name="project" select="@project"/> 227*1212f9a0SAndroid Build Coastguard Worker <xsl:variable name="dependfilename" select="concat(/workspace/@outputdir, '/', $project, '.SUCCESS')"/> 228*1212f9a0SAndroid Build Coastguard Worker <available file="{$dependfilename}" property="dependency.{$project}.present"/> 229*1212f9a0SAndroid Build Coastguard Worker <antcall target="{$project}-dependency"/> 230*1212f9a0SAndroid Build Coastguard Worker </xsl:template> 231*1212f9a0SAndroid Build Coastguard Worker 232*1212f9a0SAndroid Build Coastguard Worker 233*1212f9a0SAndroid Build Coastguard Worker <!-- =========================================================================================== 234*1212f9a0SAndroid Build Coastguard Worker Target called only if the related property is not set (ie the dependency 235*1212f9a0SAndroid Build Coastguard Worker is not verified) since it will fail and replace its tag status by a Prereq 236*1212f9a0SAndroid Build Coastguard Worker information in the html index file. 237*1212f9a0SAndroid Build Coastguard Worker =========================================================================================== --> 238*1212f9a0SAndroid Build Coastguard Worker <xsl:template match="/workspace/project/depend" mode="failed-dependency"> 239*1212f9a0SAndroid Build Coastguard Worker <xsl:variable name="failed-project" select="@project"/> 240*1212f9a0SAndroid Build Coastguard Worker <target name="{$failed-project}-dependency" unless="dependency.{$failed-project}.present"> 241*1212f9a0SAndroid Build Coastguard Worker <echo message="PREREQ Failure: Project depends on {$failed-project}"/> 242*1212f9a0SAndroid Build Coastguard Worker <available file="{/workspace/@outputdir}/{../@name}.FAILED" property="dependency-failure"/> 243*1212f9a0SAndroid Build Coastguard Worker <replace file="{/workspace/@outputdir}/status.xml" token="TAG-{../@name}-STATUS" value="Prereq Failure: {$failed-project}"/> 244*1212f9a0SAndroid Build Coastguard Worker <fail message="PREREQ Failure: Dependency on {$failed-project} could not be satisfied."/> 245*1212f9a0SAndroid Build Coastguard Worker </target> 246*1212f9a0SAndroid Build Coastguard Worker </xsl:template> 247*1212f9a0SAndroid Build Coastguard Worker 248*1212f9a0SAndroid Build Coastguard Worker 249*1212f9a0SAndroid Build Coastguard Worker <xsl:template match="/workspace/project/ant/property"> 250*1212f9a0SAndroid Build Coastguard Worker <arg> 251*1212f9a0SAndroid Build Coastguard Worker <xsl:attribute name="value"> 252*1212f9a0SAndroid Build Coastguard Worker <xsl:text>-D</xsl:text> 253*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="@name"/> 254*1212f9a0SAndroid Build Coastguard Worker <xsl:text>=</xsl:text> 255*1212f9a0SAndroid Build Coastguard Worker <xsl:choose> 256*1212f9a0SAndroid Build Coastguard Worker <xsl:when test="@value"> 257*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="@value"/> 258*1212f9a0SAndroid Build Coastguard Worker </xsl:when> 259*1212f9a0SAndroid Build Coastguard Worker <xsl:otherwise> 260*1212f9a0SAndroid Build Coastguard Worker <xsl:if test="@reference and @project"> 261*1212f9a0SAndroid Build Coastguard Worker <xsl:variable name="projname" select="@project"/> 262*1212f9a0SAndroid Build Coastguard Worker <xsl:variable name="refname" select="@reference"/> 263*1212f9a0SAndroid Build Coastguard Worker <xsl:choose> 264*1212f9a0SAndroid Build Coastguard Worker <xsl:when test="@id"> 265*1212f9a0SAndroid Build Coastguard Worker <xsl:variable name="propid" select="@id"/> 266*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="/workspace/project[@name=$projname]/*[name()=$refname and @id=$propid]"/> 267*1212f9a0SAndroid Build Coastguard Worker </xsl:when> 268*1212f9a0SAndroid Build Coastguard Worker <xsl:otherwise> 269*1212f9a0SAndroid Build Coastguard Worker <xsl:value-of select="/workspace/project[@name=$name]/*[name()=$refname]"/> 270*1212f9a0SAndroid Build Coastguard Worker </xsl:otherwise> 271*1212f9a0SAndroid Build Coastguard Worker </xsl:choose> 272*1212f9a0SAndroid Build Coastguard Worker </xsl:if> 273*1212f9a0SAndroid Build Coastguard Worker </xsl:otherwise> 274*1212f9a0SAndroid Build Coastguard Worker </xsl:choose> 275*1212f9a0SAndroid Build Coastguard Worker </xsl:attribute> 276*1212f9a0SAndroid Build Coastguard Worker </arg> 277*1212f9a0SAndroid Build Coastguard Worker </xsl:template> 278*1212f9a0SAndroid Build Coastguard Worker 279*1212f9a0SAndroid Build Coastguard Worker <!-- 280*1212f9a0SAndroid Build Coastguard Worker * Licensed to the Apache Software Foundation (ASF) under one 281*1212f9a0SAndroid Build Coastguard Worker * or more contributor license agreements. See the NOTICE file 282*1212f9a0SAndroid Build Coastguard Worker * distributed with this work for additional information 283*1212f9a0SAndroid Build Coastguard Worker * regarding copyright ownership. The ASF licenses this file 284*1212f9a0SAndroid Build Coastguard Worker * to you under the Apache License, Version 2.0 (the "License"); 285*1212f9a0SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 286*1212f9a0SAndroid Build Coastguard Worker * You may obtain a copy of the License at 287*1212f9a0SAndroid Build Coastguard Worker * 288*1212f9a0SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 289*1212f9a0SAndroid Build Coastguard Worker * 290*1212f9a0SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 291*1212f9a0SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 292*1212f9a0SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 293*1212f9a0SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 294*1212f9a0SAndroid Build Coastguard Worker * limitations under the License. 295*1212f9a0SAndroid Build Coastguard Worker --> 296*1212f9a0SAndroid Build Coastguard Worker 297*1212f9a0SAndroid Build Coastguard Worker</xsl:stylesheet> 298