选择选项不起作用

时间:2013-02-13 12:01:38

标签: xslt-1.0

我的构建脚本创建4个不同的Build

名称
STP_13_00_00_00_RC01
STPMON_13_00_00_00_RC01
STPWEB_13_00_00_00_RC01
STPPRODUCTS_13_00_00_00_RC01

所以我想当脚本创建名为**STP_13_00_00_00_RC01**的构建时,它应该创建文件夹然后复制该文件夹中的tar文件,之后它应该再创建一个文件夹,而如果构建名称以其他名称开头STPMON,STPWEB.STPPRODUCTS然后它应该只创建文件夹并复制该文件夹中的tar文件所以我使用下面的condidtion.But所有构建它进入否则条件要么使用STP创建构建

</xsl:element>
<xsl:element name="gzip">
  <xsl:attribute name="destfile"
    >${archive.base}/${gbl.dist.label}.tar.gz</xsl:attribute>
  <xsl:attribute name="src"
    >${archive.base}/${gbl.dist.label}.tar</xsl:attribute>
</xsl:element>
<xsl:choose>
  <xsl:when test="contains(node,'STP')">
    <xsl:element name="mkdir">
      <xsl:attribute name="dir"
        >/mnt/projects/autoblds_dev_build/blds_dev_stp2build/${gbl.dist.label}</xsl:attribute>
    </xsl:element>
    <xsl:element name="copy">
      <xsl:attribute name="file">${archive.base}/${gbl.dist.label}.tar.gz</xsl:attribute>
      <xsl:attribute name="todir"
        >/mnt/projects/autoblds_dev_build/blds_dev_stp2build/${gbl.dist.label}/</xsl:attribute>
      <xsl:attribute name="overwrite">no</xsl:attribute>
    </xsl:element>
    <xsl:element name="mkdir">
      <xsl:attribute name="dir"
        >/mnt/projects/autoblds_dev_build/blds_dev_stp2build/${soa.release.version}</xsl:attribute>
    </xsl:element>
  </xsl:when>
  <xsl:otherwise>
    <xsl:element name="mkdir">
      <xsl:attribute name="dir"
        >/mnt/projects/autoblds_dev_build/blds_dev_stp2build/${gbl.dist.label}_Test</xsl:attribute>
    </xsl:element>
    <xsl:element name="copy">
      <xsl:attribute name="file"
         >${archive.base}/${gbl.dist.label}.tar.gz</xsl:attribute>
      <xsl:attribute name="todir"
         >/mnt/projects/autoblds_dev_build/blds_dev_stp2build/${gbl.dist.label}_Test/</xsl:attribute>
      <xsl:attribute name="overwrite">no</xsl:attribute>
    </xsl:element>
  </xsl:otherwise>
</xsl:choose>

1 个答案:

答案 0 :(得分:0)

您的选择指令分支条件

contains(node,'STP')

这至少有一个问题,可能有两个问题。

您对问题的描述表明您希望对名为STP_13_00_00_00_RC01的构建采取一种方式,对于名称以STPMONSTPWEB或{{1 }}。但是所有这些构建名称都包含字符串'STP',因此您的测试条件无法区分它们。换句话说,你的代码不会做你想要的,因为你没有说出你的意思。

你说测试永远不会成功(样式表总是采用STPPRODUCTS分支)。这表明表达式otherwise不会评估您似乎期望的字符串,也不会评估可能被强制转换为您期望的字符串的文档节点。可能的原因包括:

  • 您的XML没有名为node的元素。
  • 您的XML有一个名为node的元素,但它不是引用代码的模板的上下文节点的子元素。
  • 您的XML有一个名为node的元素,它是上下文节点的子元素,但其字符串值不是构建的名称。

任何这些都是可能的,但如果我不得不猜测,我猜它是第一个。