XSLT使用choose转换数据

时间:2014-08-18 00:20:57

标签: xml xslt

我有一个XML文档,我想使用XSLT来更改数据的格式。

XML值

<UniqueName>XXX</UniqueName>
<Parent>XYZ</Parent>
<Name>ABC</Name>

如果Uniquename中有XXX,我想将Uniquename值更改为123

我尝试了以下但是它似乎在XML中添加了另一列而不是将XXX转换为123

 <th style="text-align:left">UniqueName</th>
 <th style="text-align:left">Parent</th>
 <th style="text-align:left">Name</th>

 </tr>
 <xsl:for-each select="units/row">
 <tr>


 <Review> 
 <td><xsl:value-of select="UniqueName"/></td> 
 <xsl:if test="UniqueName= 'XXX'"><text>123</text> 
 </xsl:if>  
 </Review> 

我需要更改以获取我想要的值

1 个答案:

答案 0 :(得分:1)

正如您的标题所示,您需要使用xsl:choose,而不是xsl:if。试试这种方式:

<xsl:for-each select="units/row">
    <tr>
        <td>
            <xsl:choose>
                <xsl:when test="UniqueName='XXX'">
                    <xsl:text>123</xsl:text> 
                </xsl:when>
                <xsl:otherwise>
                    <xsl:value-of select="UniqueName"/>
                </xsl:otherwise>
            </xsl:choose>
        </td> 
        <!-- more cells ... -->
    </tr>   
</xsl:for-each>

请注意<text><xsl:text>之间的区别。而且我不确定为什么你需要在表格中间使用<Review>元素。