xslt代码在最多2个值之间进行选择

时间:2015-06-18 09:30:09

标签: xslt

我有这个xml文件。

<?xml version="1.0" encoding="utf-8"?>
<racine>
  <index>
    <Parent nom="00000002" Name="" Address="" />
    <Meter numSerie="00000002" />
    <arrêté dateArrêté="28/02/2015 00:00:00">
      <ValeurIndex Libelle="Val1">23.334</ValeurIndex>
      <ValeurIndex Libelle="Val2">5.186</ValeurIndex>
      <ValeurIndex Libelle="Val3">2.79</ValeurIndex>
      </arrêté>
  </index>
</racine>

我希望将其转换为txt文件,我需要在Val1和Val2之间添加一个值为max的新行,如下例所示。

Val1,23.334
Val2,5.186
Val3,2.79
MaxVal1Vl2,23.334

我创造的东西是:

<xsl:choose>
      <xsl:when test="@Libelle = 'Val1'">Val1</xsl:when>    
      <xsl:when test="@Libelle = 'Val2'">Val2</xsl:when>    
      <xsl:when test="@Libelle = 'Val3'">Val3</xsl:when>    
  </xsl:choose>
<xsl:text>,</xsl:text>
    <xsl:value-of select="."/>
    <xsl:text>&#xD;&#xA;</xsl:text>

如何添加4行作为Val1和Val2的最大值?

由于

1 个答案:

答案 0 :(得分:1)

尝试:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="utf-8"/>

<xsl:template match="/racine">
    <xsl:for-each select="index/arrêté/ValeurIndex">
      <xsl:value-of select="@Libelle"/>
      <xsl:text>,</xsl:text>
      <xsl:value-of select="."/>
      <xsl:text>&#10;</xsl:text>
    </xsl:for-each>
    <xsl:variable name="v1" select="index/arrêté/ValeurIndex[@Libelle='Val1']" />
    <xsl:variable name="v2" select="index/arrêté/ValeurIndex[@Libelle='Val2']" />
    <xsl:text>MaxVal1Vl2,</xsl:text>
    <xsl:choose>
        <xsl:when test="$v1 > $v2">
            <xsl:value-of select="$v1"/>
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="$v2"/>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

</xsl:stylesheet>