I want sum values of elements "time". Here is my xml:
<document> <recordlist> <bestseller year="2015"> <plate id="p01" kind="Pop&Rock"> <title>Atramentowa</title> <performer>Celińska Stanisława</performer> <release_date>2015-05-08</release_date> <distributor idref="d1" /> <price currency="PLN">37,49</price> <year_recorded>2015</year_recorded> <availability mp3="1" cd="0" dvd="1" /> <playlist id="pl01" nazwa="Atramentowa"> <track id="p01u01">Czerń i biel<time>3:27</time></track> <track id="p01u02">Czy o kimś ktoś<time>2:17</time></track> <track id="p01u03">Atramentowa rumba<time>5:16</time></track> <track id="p01u04">Do rycerzy, do szlachty, do mieszczan<time>3:22</time></track> <track id="p01u05">Drzwi odemknij<time>3:21</time></track> <track id="p01u06">Moje życie, twoje życie<time>3:19</time></track> <track id="p01u07">Obfitość<time>3:20</time></track> <track id="p01u08">Jego portret<time>3:15</time></track> <track id="p01u09">I znowu on<time>3:11</time></track> <track id="p01u10">Nie strasz<time>3:55</time></track> <track id="p01u11">Smuteczku mój<time>3:44</time></track> <track id="p01u12">Szeptem do mnie mów<time>3:33</time></track> <track id="p01u13">Wielka słota<time>3:11</time></track> <track id="p01u14">Wakacje z deszczem<time>2:59</time></track> <track id="p01u15">Pieśń cygańska<time>3:09</time></track> </playlist> </plate> </bestseller> </recordlist> </document> Here is my xslt:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" /> <xsl:template match="*"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> <xsl:template match="@* | *[not(node())]"/> <xsl:template match="/document"> <xsl:apply-templates/> </xsl:template> <xsl:template match="bestseller/@year | plate/@kind"> <xsl:element name="{name()}"> <xsl:value-of select="."/> </xsl:element> </xsl:template> <xsl:template match="//recordlist"> <xsl:element name="recordlist"> <xsl:apply-templates select="bestseller"/> </xsl:element> </xsl:template> <xsl:template match="//plate"> <xsl:element name="plate"> <xsl:element name="kind"> <xsl:value-of select="./@kind"/> </xsl:element> <xsl:element name="title"> <xsl:value-of select="./title"/> </xsl:element> <xsl:element name="performer"> <xsl:value-of select="./performer"/> </xsl:element> <xsl:element name="release_date"> <xsl:value-of select="./release_date"/> </xsl:element> <xsl:element name="price"> <xsl:value-of select="./price"/> </xsl:element> <xsl:element name="year_recorded"> <xsl:value-of select="./year_recorded"/> </xsl:element> <xsl:element name="time_duration"> <xsl:value-of select="sum(*/time)"/> </xsl:element> <xsl:element name="time_from_release"> <xsl:value-of select="time"/> </xsl:element> <xsl:apply-templates select="playlist"/> </xsl:element> </xsl:template> <xsl:template match="//playlist"> <xsl:element name="playlist"> <xsl:for-each select="track"> <xsl:element name="track"> <xsl:value-of select="node()"/> <xsl:apply-templates select="time"/> </xsl:element> </xsl:for-each> </xsl:element> </xsl:template> <xsl:template match="//time"> <xsl:element name="time"> <xsl:value-of select="."/> </xsl:element> </xsl:template> </xsl:stylesheet> And I expect the effect like this:
<?xml version="1.0" encoding="UTF-8"?> <document> <recordlist> <bestseller> <year>2015</year> <plate> <kind>Pop&Rock</kind> <title>Atramentowa</title> <performer>Celińska Stanisława</performer> <release_date>2015-05-08</release_date> <price>37,49</price> <year_recorded>2015</year_recorded> <time_duration>RESLUT</time_duration> <time_from_release /> <playlist> <track> Czerń i biel <czas>3:27</czas> </track> <track> Czy o kimś ktoś <czas>2:17</czas> </track> <track> Atramentowa rumba <czas>5:16</czas> </track> <track> Do rycerzy, do szlachty, do mieszczan <czas>3:22</czas> </track> <track> Drzwi odemknij <czas>3:21</czas> </track> <track> Moje życie, twoje życie <czas>3:19</czas> </track> <track> Obfitość <czas>3:20</czas> </track> <track> Jego portret <czas>3:15</czas> </track> <track> I znowu on <czas>3:11</czas> </track> <track> Nie strasz <czas>3:55</czas> </track> <track> Smuteczku mój <czas>3:44</czas> </track> <track> Szeptem do mnie mów <czas>3:33</czas> </track> <track> Wielka słota <czas>3:11</czas> </track> <track> Wakacje z deszczem <czas>2:59</czas> </track> <track> Pieśń cygańska <czas>3:09</czas> </track> </playlist> </plate> </bestseller> </recordlist> </document> In element "time_duration" i expect the total time of plate like (xx:xx), now i have only output equal 0.
And the second question is how to count the difference between element "release_date" and current date. I know i have to add to stylesheet
xmlns:datetime="http://exslt.org/dates-and-times" and then i can use the function
current-date() However site http://exslt.org/dates-and-times doesn't exist, so i can't use this function, am i right?
No comments:
Post a Comment