根据XSLT中的if语句分配变量

时间:2016-01-19 18:49:39

标签: xml xslt

以下是我正在实现的以下伪代码:

if {./jobtype eq 1} jobbackgroundcolor='#ffffff';
if {./jobtype eq 2} jobbackgroundcolor='#000000';
if {./jobtype eq 3} jobbackgroundcolor='#ababab';
if {./jobtype eq 4} jobbackgroundcolor='#eac123';
if {./jobtype eq 5} jobbackgroundcolor='#eacddd';

我不知道如何将jobbackgroundcolor设置为变量,所以我基本上可以这样做:

<a href="" style="background-color:{$jobbackgroundcolor}"></a>

当然代码是伪代码,所以任何具体的实现都会很棒。

1 个答案:

答案 0 :(得分:1)

XSLT 2.0解决方案

鉴于此输入XML

<jobtype>3</jobtype>

此XSLT

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
  <xsl:output method="xml" omit-xml-declaration="yes"/>

  <xsl:template match="/">
    <xsl:variable name="jt" select="number(jobtype)"/>
    <a>
      <xsl:if test="$jt = (1 to 5)">
        <xsl:attribute name="style"
                       select="concat('background-color:',
                               ('#ffffff','#000000','#ababab','#eac123','#eacddd')[$jt])"/>
      </xsl:if>
    </a>
  </xsl:template>

</xsl:stylesheet>

将输出此XML

<a style="background-color:#ababab"/>
根据要求