2017-10-21 82 views
0

Je souhaite afficher le montant total spilttup pour chaque jour. J'ai essayé avec le code ci-dessous. functx: le jour suivant La fonction sert à définir la date archivée.
entrée
StartDate = "04-12-2017"xslt Fonctions liées à la date

NoDays = 6

Prix = 15540

Mais je veux montrer le résultat comme indiqué ci-dessous. Y at-il une autre fonction est requise pour définir la valeur du champ de date.

Current output: 


        <Night> 
         <Price Amount="2590" NightDate="2017-12-05" /> 
         <Price Amount="2590" NightDate="2017-12-06" /> 
         <Price Amount="2590" NightDate="2017-12-07" /> 
         <Price Amount="2590" NightDate="2017-12-08" /> 
         <Price Amount="2590" NightDate="2017-12-09" /> 
         <Price Amount="2590" NightDate="2017-12-10" /> 
        </Night> 




Expected Output: 

        <Night> 
         <Price Amount="2590" NightDate="2017-12-04" /> 
         <Price Amount="2590" NightDate="2017-12-05" /> 
         <Price Amount="2590" NightDate="2017-12-06" /> 
         <Price Amount="2590" NightDate="2017-12-07" /> 
         <Price Amount="2590" NightDate="2017-12-08" /> 
         <Price Amount="2590" NightDate="2017-12-09" /> 
        </Night> 



Currently used Logic: 

<Night>                         
    <xsl:for-each select="1 to $NoDays"> 

     <Price>                             

      <xsl:attribute name="Amount"> 

       <xsl:value-of select="$Price div $NoDays"/> 

     </xsl:attribute> 

      <xsl:attribute name="NightDate"> 

      <xsl:value-of select="functx:next- 
        day(xs:date($StartDate),position())"/> 

     </xsl:attribute> 

    </Price> 

</xsl:for-each> 

+1

Veuillez formater correctement votre question. – Tomalak

Répondre

0

Je pense que vous voulez simplement

<xsl:variable name="NoDays" select="6"/> 
    <xsl:variable name="Price" select="15540"/> 
    <xsl:variable name="StartDate">04-12-2017</xsl:variable> 
    <xsl:variable name="date" as="xs:date" 
        select="xs:date(replace($StartDate, 
              '([0-9]{2})-([0-9]{2})-([0-9]{4})', 
              '$3-$2-$1'))"/> 
    <xsl:for-each select="0 to $NoDays - 1"> 
     <Price Amount="{$Price div $NoDays}" 
       NightDate="{$date + xs:dayTimeDuration('P1D') * .}"/> 
    </xsl:for-each> 

qui exploite que vous pouvez multiplier une durée avec un entier et l'ajouter à une date.

Échantillon en ligne à http://xsltransform.net/bEzjRKT

+0

Excellente solution, presque mieux que la formulation de la question mérite. –