0
我有一個問題,使最多2個不同的值。xslt最大值之間已經顯示的2個值
我有下面的xml文件,那是我的系統的導出。
<?xml version="1.0" encoding="utf-8"?>
<racine Version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<index nom="Facturation" DateMAJ="20150520170532" HeureMAJ="17:05:32">
<Parent nom="00000002B" DateMAJ="04/03/2015 14:51:00" HeureMAJ="14:51:00" type="PDL">
<Attributs />
</Parent>
<Propriété IdExterne="" NomEquipement="00000002B" Numero="0" />
<equipement obsolete="INTERDIT" numSerie="" numSerieClient="00000002" numSerieADS="00000002" type="SL7000" cfg="Standard-ENAMC">
<Attributs />
<idExt n="GDO" />
<idExt n="CONTRAT" />
<idExt n="LIVRAISON" />
<idExt n="REF_CLI" />
</equipement>
<Meters>
<Meter nom="00000002B" numSerieClient="00000002" numSerieADS="00000002" type="SL7000" fluide="1" cfg="Standard-ENAMC">
<Item name="attachBegin" value="19850101" />
<Item name="attachEnd" value="20500101" />
</Meter>
</Meters>
<arrêté dateArrêté="20150301000000" indexCourant="False" etiquette="0">
<ValeurIndex Libelle="IND_DON_PERIOD">M</ValeurIndex>
<ValeurIndex Libelle="IND_DON_CONTRAT">F</ValeurIndex>
<ValeurIndex Libelle="IND_DON_CALCMODE">A</ValeurIndex>
<ValeurIndex Libelle="EA.R00">23334.000000</ValeurIndex>
<ValeurIndex Libelle="EA.R01">5186.000000</ValeurIndex>
<ValeurIndex Libelle="EA.R02">2790.000000</ValeurIndex>
<ValeurIndex Libelle="EA.R03">8545.000000</ValeurIndex>
<ValeurIndex Libelle="EA.R05">7778.000000</ValeurIndex>
<ValeurIndex Libelle="EA.R06">7777.000000</ValeurIndex>
<ValeurIndex Libelle="EA.R07">7779.000000</ValeurIndex>
<ValeurIndex Libelle="EAE.R00">33.000000</ValeurIndex>
<ValeurIndex Libelle="AEINDEX0">0.000000</ValeurIndex>
<ValeurIndex Libelle="AEINDEX1">0.000000</ValeurIndex>
<ValeurIndex Libelle="AEINDEX2">0.000000</ValeurIndex>
<ValeurIndex Libelle="AEINDEX3">0.000000</ValeurIndex>
<ValeurIndex Libelle="AEINDEX5">0.000000</ValeurIndex>
<ValeurIndex Libelle="AEINDEX6">0.000000</ValeurIndex>
<ValeurIndex Libelle="AEINDEX7">0.000000</ValeurIndex>
<ValeurIndex Libelle="R1INDEX0">3754.000000</ValeurIndex>
<ValeurIndex Libelle="PMAXVALUE0">1047</ValeurIndex>
<ValeurIndex Libelle="PMAXDATE0">02/11/2015 17:10:00</ValeurIndex>
<ValeurIndex Libelle="IND_DON_CFG">SL7000.STANDARD-ENAMC.1.0.2</ValeurIndex>
</arrêté>
</index>
</racine>
我XLST變換是我在下面:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" version="1.0" encoding="ISO-8859-1" indent="yes"/>
<!-- Parcours des noeuds "racine/index" -->
<xsl:variable name="v_separateur">
<xsl:text>,</xsl:text>
</xsl:variable>
<!-- sort by date desc" -->
<xsl:template match="/racine">
<xsl:for-each select="index">
<xsl:sort select="arrêté/@dateArrêté" order="descending" data-type="number"/>
<xsl:call-template name="Arrete"/>
</xsl:for-each>
</xsl:template>
<xsl:template name="Arrete">
<!-- Only Process OBIS* values ignore other -->
<xsl:for-each select="arrêté/ValeurIndex[
@Libelle='EA.R00'
or @Libelle='EA.R01'
or @Libelle='EA.R02'
or @Libelle='EA.R03'
or @Libelle='EA.R05'
or @Libelle='EA.R06'
or @Libelle='EA.R07'
or @Libelle='EAE.R00'
or @Libelle='AEINDEX0'
or @Libelle='AEINDEX1'
or @Libelle='AEINDEX2'
or @Libelle='AEINDEX3'
or @Libelle='AEINDEX5'
or @Libelle='AEINDEX6'
or @Libelle='AEINDEX7'
or @Libelle='R1INDEX0'
or @Libelle='PMAXVALUE0'
]
">
<xsl:call-template name="ValeurIndex" />
</xsl:for-each>
</xsl:template>
<xsl:template name="ValeurIndex"> <!--match="ValeurIndex"-->
<!-- SP_ID -->
<xsl:value-of select="../../Parent/@nom"/>
<xsl:value-of select="$v_separateur"/>
<!-- METER_NUMBER-->
<xsl:value-of select="../../Meter/@numSerie"/>
<xsl:value-of select="$v_separateur"/>
<!-- DATE & TIME-->
<xsl:value-of select="../../arrêté/@dateArrêté"/>
<xsl:value-of select="$v_separateur"/>
<xsl:choose>
<xsl:when test="@Libelle = 'EA.R00'">KWH,PUNTA</xsl:when>
<xsl:when test="@Libelle = 'EA.R01'">KWH,VALLE</xsl:when>
<xsl:when test="@Libelle = 'EA.R02'">KWH,LLANO</xsl:when>
<xsl:when test="@Libelle = 'EA.R03'">KW,</xsl:when>
<xsl:when test="@Libelle = 'EA.R05'">KWH,</xsl:when>
<xsl:when test="@Libelle = 'EA.R06'">KVH,ER_Q2</xsl:when>
<xsl:when test="@Libelle = 'EA.R07'">KVH,ER_Q3</xsl:when>
<xsl:when test="@Libelle = 'EAE.R00'">KVH,ER_Q4</xsl:when>
<xsl:when test="@Libelle = 'AEINDEX0'">KWH,PUNTA_SA</xsl:when>
<xsl:when test="@Libelle = 'AEINDEX1'">KWH,VALLE_SA</xsl:when>
<xsl:when test="@Libelle = 'AEINDEX2'">KWH,LLANO_SA</xsl:when>
<xsl:when test="@Libelle = 'AEINDEX3'">KWH,</xsl:when>
<xsl:when test="@Libelle = 'AEINDEX5'">KWH,ENERSAL</xsl:when>
<xsl:when test="@Libelle = 'AEINDEX6'">KW,PUNTA</xsl:when>
<xsl:when test="@Libelle = 'AEINDEX7'">KW,VALLE</xsl:when>
<xsl:when test="@Libelle = 'R1INDEX0'">KW,LLANO</xsl:when>
<xsl:when test="@Libelle = 'PMAXVALUE0'">KW, PUNTA_SA</xsl:when>
<xsl:otherwise><xsl:value-of select="Param[@code = 'TYPE_EQP']/@value"/></xsl:otherwise>
</xsl:choose>
<xsl:text>,</xsl:text>
<xsl:value-of select="."/>
<xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
,我得到的結果是:
00000002,00000002,28/02/2015 00:00:00,KWH,PUNTA,23.334
00000002,00000002,28/02/2015 00:00:00,KWH,VALLE,5.186
00000002,00000002,28/02/2015 00:00:00,KWH,LLANO,2.79
00000002,00000002,28/02/2015 00:00:00,KW,,8.545
00000002,00000002,28/02/2015 00:00:00,KWH,,7.778
00000002,00000002,28/02/2015 00:00:00,KVH,ER_Q2,7.777
00000002,00000002,28/02/2015 00:00:00,KVH,ER_Q3,7.779
00000002,00000002,28/02/2015 00:00:00,KVH,ER_Q4,0.033
00000002,00000002,28/02/2015 00:00:00,KWH,PUNTA_SA,3234
00000002,00000002,28/02/2015 00:00:00,KWH,VALLE_SA,342
00000002,00000002,28/02/2015 00:00:00,KWH,LLANO_SA,342
00000002,00000002,28/02/2015 00:00:00,KWH,,0
00000002,00000002,28/02/2015 00:00:00,KWH,ENERSAL,0
00000002,00000002,28/02/2015 00:00:00,KW,PUNTA,0
00000002,00000002,28/02/2015 00:00:00,KW,VALLE,0
00000002,00000002,28/02/2015 00:00:00,KW,LLANO,3.754
00000002,00000002,28/02/2015 00:00:00,KW, PUNTA_SA,0.104
但我的問題是,我想一個新行添加到上面的文件,其中顯示最大值之間:
<xsl:when test="@Libelle = 'EA.R00'">
和
<xsl:when test="@Libelle = 'EA.R02'">
在上面的例子將是EA.R00(23.334)。所以我想添加一行: 00000002,00000002,28/02/2015 00:00:00,KWH ,, 23.334 您必須注意,我希望獲得值後,我需要char KW的值最大值。
有人可以幫我解決這個問題嗎?
感謝
嗨,我有一些問題在這裏我之前並沒有意識到。 EA.R00和EA.R02之間的最大值,如果我沒有任何值「NULL」(字段爲空)。我不應該糾正整行。現在如果我沒有這些值我沒有寫: 00000002,00000002,,KWH ,, 我該如何解決這個問題? – Raul
@Raul對不起,我沒有關注。 –