XSLT +用选定列中的图像替换字符串

时间:2012-01-23 19:49:25

标签: xml xslt

我正在尝试用图像替换列“Status_Ind”的不同状态指示符(例如Y或N)。我想创建“交通灯”,其中:
- 用“/img/green.jpg”替换“已完成”
- 用“/img/yellow.jpg”取代“进行中”

输入XML:

<Rowsets>
  <Rowset>
    <Columns>
      <Column Description="Status_Ind"/>
      <Column Description="Name"/>
    </Columns>
    <Row>
      <Status_Ind>Completed</Status_Ind>
      <Name>TASK1</Name>
    </Row>
    <Row>
      <Status_Ind>In Progress</Status_Ind>
      <Name>TASK2</Name>
    </Row>
  </Rowset>
</Rowsets>  

对于XSLT,我使用https://stackoverflow.com/a/8841189/1130511

中的代码

我的尝试:

<xsl:template match="@Description='Status_Ind']">
  <xsl:choose>
    <xsl:when test="Completed">
      <img src="../img/green.jpg" />
    </xsl:when>
    <xsl:when test="In Progress">
      <img src="../img/yellow.jpg" />
    </xsl:when>
  </xsl:choose>
</xsl:template>

1 个答案:

答案 0 :(得分:4)

使用两个专用模板轻松:

<xsl:template match="Status_Ind[. = 'Completed']">
  <img src="../img/green.jpg" />
</xsl:template>

<xsl:template match="Status_Ind[. = 'In Progress']">
  <img src="../img/yellow.jpg" />
</xsl:template>

这样你就可以做到

<xsl:template match="Row">
  <tr>
    <td><xsl:apply-templates select="Status_Ind" /></td>
    <!-- etc -->
  </tr>
</xsl:template>