1
0
mirror of https://gitlab.gnome.org/GNOME/libxslt synced 2025-11-06 23:49:25 +03:00

applied another patch from Charles Bozeman to enhance date/duration

* libexslt/date.c: applied another patch from Charles Bozeman to
  enhance date/duration support
* tests/exslt/date: added the associated set of regression tests
Daniel
This commit is contained in:
Daniel Veillard
2002-04-26 06:17:51 +00:00
parent 8993631196
commit eba179e9b4
37 changed files with 603 additions and 18 deletions

View File

@@ -1,3 +1,9 @@
Fri Apr 26 08:15:30 CEST 2002 Daniel Veillard <daniel@veillard.com>
* libexslt/date.c: applied another patch from Charles Bozeman to
enhance date/duration support
* tests/exslt/date: added the associated set of regression tests
Thu Apr 25 08:18:57 CEST 2002 Daniel Veillard <daniel@veillard.com>
* libexslt/date.c: applied a patch from Charles Bozeman to add

View File

@@ -76,8 +76,9 @@ A:link, A:visited, A:active { text-decoration: underline }
<td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd">
<p>The latest versions of libxslt can be found on <a href="ftp://xmlsoft.org/">xmlsoft.org</a> (<a href="ftp://speakeasy.rpmfind.net/pub/libxml/">Seattle</a>, <a href="ftp://fr.rpmfind.net/pub/libxml/">France</a>) or on the <a href="ftp://ftp.gnome.org/pub/GNOME/MIRRORS.html">Gnome FTP server</a> either
as a <a href="ftp://ftp.gnome.org/pub/GNOME/stable/sources/libxslt/">source
archive</a> or <a href="ftp://ftp.gnome.org/pub/GNOME/contrib/redhat/SRPMS/">RPM packages</a>.
(NOTE that you need the <a href="http://rpmfind.net/linux/RPM/libxml2.html">libxml2</a>, <a href="http://rpmfind.net/linux/RPM/libxml2-devel.html">libxml2-devel</a>, <a href="http://rpmfind.net/linux/RPM/libxslt.html">libxslt</a> and <a href="http://rpmfind.net/linux/RPM/libxslt-devel.html">libxslt-devel</a>
archive</a> or <a href="ftp://ftp.gnome.org/pub/GNOME/contrib/redhat/SRPMS/">RPM packages</a>,
Antonin Sprinzl also provides <a href="ftp://gd.tuwien.ac.at/pub/libxml/">a
mirror in Austria</a>. (NOTE that you need the <a href="http://rpmfind.net/linux/RPM/libxml2.html">libxml2</a>, <a href="http://rpmfind.net/linux/RPM/libxml2-devel.html">libxml2-devel</a>, <a href="http://rpmfind.net/linux/RPM/libxslt.html">libxslt</a> and <a href="http://rpmfind.net/linux/RPM/libxslt-devel.html">libxslt-devel</a>
packages installed to compile applications using libxslt.) <a href="mailto:igor@stud.fh-frankfurt.de">Igor Zlatkovic</a> is now the
maintainer of the Windows port, <a href="http://www.fh-frankfurt.de/~igor/projects/libxml/index.html">he
provides binaries</a>. <a href="mailto:Gary.Pennington@sun.com">Gary

View File

@@ -79,7 +79,7 @@ for a really accurate description</h3>
<h3>1.0.16: April 15 2002</h3>
<ul>
<li>Bug fixes: strip-space, URL in HTML output, error when xsltproc can't
save </li>
save</li>
<li>portability fixes: OSF/1, IEEE on alphas, Windows, Python bindings</li>
</ul>
<h3>1.0.15: Mar 25 2002</h3>

View File

@@ -176,8 +176,9 @@ href="ftp://fr.rpmfind.net/pub/libxml/">France</a>) or on the <a
href="ftp://ftp.gnome.org/pub/GNOME/MIRRORS.html">Gnome FTP server</a> either
as a <a href="ftp://ftp.gnome.org/pub/GNOME/stable/sources/libxslt/">source
archive</a> or <a
href="ftp://ftp.gnome.org/pub/GNOME/contrib/redhat/SRPMS/">RPM packages</a>.
(NOTE that you need the <a
href="ftp://ftp.gnome.org/pub/GNOME/contrib/redhat/SRPMS/">RPM packages</a>,
Antonin Sprinzl also provides <a href="ftp://gd.tuwien.ac.at/pub/libxml/">a
mirror in Austria</a>. (NOTE that you need the <a
href="http://rpmfind.net/linux/RPM/libxml2.html">libxml2</a>, <a
href="http://rpmfind.net/linux/RPM/libxml2-devel.html">libxml2-devel</a>, <a
href="http://rpmfind.net/linux/RPM/libxslt.html">libxslt</a> and <a
@@ -236,7 +237,7 @@ for a really accurate description</h3>
<h3>1.0.16: April 15 2002</h3>
<ul>
<li>Bug fixes: strip-space, URL in HTML output, error when xsltproc can't
save </li>
save</li>
<li>portability fixes: OSF/1, IEEE on alphas, Windows, Python bindings</li>
</ul>

View File

@@ -922,7 +922,7 @@ exsltDateParseDuration (const xmlChar *duration) {
const xmlChar *cur = duration;
exsltDateValPtr dur;
int isneg = 0;
int seq = 0;
unsigned int seq = 0;
if (duration == NULL)
return NULL;
@@ -944,7 +944,7 @@ exsltDateParseDuration (const xmlChar *duration) {
double num;
int num_type = 0; /* -1 = invalid, 0 = int, 1 = floating */
const xmlChar desig[] = {'Y', 'M', 'D', 'H', 'M', 'S'};
const double mult[] = { 0.0, 0.0, 86400.0, 3600.0, 60.0, 1.0, 0.0};
const double multi[] = { 0.0, 0.0, 86400.0, 3600.0, 60.0, 1.0, 0.0};
/* input string should be empty or invalid date/time item */
if (seq >= sizeof(desig))
@@ -971,7 +971,7 @@ exsltDateParseDuration (const xmlChar *duration) {
if (*cur == desig[seq]) {
/* verify numeric type; only seconds can be float */
if ((num_type != 0) && (seq < (sizeof(desig-1))))
if ((num_type != 0) && (seq < (sizeof(desig)-1)))
goto error;
switch (seq) {
@@ -983,7 +983,7 @@ exsltDateParseDuration (const xmlChar *duration) {
break;
default:
/* convert to seconds using multiplier */
dur->value.dur.sec += num * mult[seq];
dur->value.dur.sec += num * multi[seq];
seq++;
break;
}

View File

@@ -20,14 +20,20 @@ EXTRA_DIST = \
gyearmonth.1.out gyearmonth.1.xml gyearmonth.1.xsl \
gyearmonth.2.out gyearmonth.2.xml gyearmonth.2.xsl \
time.1.out time.1.xml time.1.xsl \
time.2.out time.2.xml time.2.xsl
time.2.out time.2.xml time.2.xsl \
add.1.out add.1.xml add.1.xsl \
add.2.out add.2.xml add.2.xsl \
add-duration.1.out add-duration.1.xml add-duration.1.xsl \
add-duration.2.out add-duration.2.xml add-duration.2.xsl \
difference.1.out difference.1.xml difference.1.xsl \
difference.2.out difference.2.xml difference.2.xsl \
duration.1.out duration.1.xml duration.1.xsl \
duration.2.out duration.2.xml duration.2.xsl \
seconds.1.out seconds.1.xml seconds.1.xsl \
seconds.2.out seconds.2.xml seconds.2.xsl
all:
valgrind:
@echo '## Running the regression tests under Valgrind'
$(MAKE) CHECKER='valgrind -q' tests
test-current:
@(echo > .memdump)
@echo \<doc/\> >current.xml
@@ -37,7 +43,7 @@ test-current:
@(for i in $(srcdir)/current.xsl ; do \
name=`basename $$i .xsl` ; \
if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
$(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml;\
$(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml;\
grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true;\
done)
@rm -f current.xml
@@ -48,7 +54,7 @@ test tests: $(top_builddir)/xsltproc/xsltproc test-current
name=`basename $$i .xsl` ; \
if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
echo $$name.xml ; \
$(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res;\
$(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res;\
if [ ! -f $(srcdir)/$$name.out ] ; then cp $$name.res $(srcdir)/$$name.out ; \
else if [ ! -s $$name.res ] ; then echo "Fatal error, no $$name.res\n" ; \
else diff $(srcdir)/$$name.out $$name.res ; fi ; fi; \

View File

@@ -0,0 +1,47 @@
add-duration : P1Y + -P1Y
result : P0D
add-duration : P1M + -P1M
result : P0D
add-duration : P1D + -P1D
result : P0D
add-duration : PT1H + -PT1H
result : P0D
add-duration : PT1M + -PT1M
result : P0D
add-duration : PT1S + -PT1S
result : P0D
add-duration : P1Y + -P12M
result : P0D
add-duration : P1D + -PT24H
result : P0D
add-duration : P1D + -PT1440M
result : P0D
add-duration : P1D + -PT86400S
result : P0D
add-duration : P1Y1D + -P12MT86400S
result : P0D
add-duration : P30D + PT24H
result : P31D
add-duration : P10Y + P45M
result : P13Y9M
add-duration : P10Y + -P12M
result : P9Y
add-duration : P5Y11M + -P12M
result : P4Y11M
add-duration : P1000Y11M30D + -PT9S
result : P1000Y11M29DT23H59M51S
add-duration : P12M29D + P365D
result : P1Y394D
add-duration : P1000Y + PT45.65S
result : P1000YT45.65S
add-duration : PT23H59M0S + PT59S
result : PT23H59M59S
add-duration : PT23H59M0S + PT61S
result : P1DT1S
add-duration : P1000Y11M30DT23H59M0.1S + PT59.9S
result : P1000Y11M31D
add-duration : P1000Y11M30DT23H59M1S + PT59S
result : P1000Y11M31D
add-duration : P1000Y11M30D + -P1DT9S
result : P1000Y11M28DT23H59M51S

View File

@@ -0,0 +1,27 @@
<?xml version="1.0"?>
<page>
<date dur1='P1Y' dur2='-P1Y'/>
<date dur1='P1M' dur2='-P1M'/>
<date dur1='P1D' dur2='-P1D'/>
<date dur1='PT1H' dur2='-PT1H'/>
<date dur1='PT1M' dur2='-PT1M'/>
<date dur1='PT1S' dur2='-PT1S'/>
<date dur1='P1Y' dur2='-P12M'/>
<date dur1='P1D' dur2='-PT24H'/>
<date dur1='P1D' dur2='-PT1440M'/>
<date dur1='P1D' dur2='-PT86400S'/>
<date dur1='P1Y1D' dur2='-P12MT86400S'/>
<date dur1='P30D' dur2='PT24H'/>
<date dur1='P10Y' dur2='P45M'/>
<date dur1='P10Y' dur2='-P12M'/>
<date dur1='P5Y11M' dur2='-P12M'/>
<date dur1='P1000Y11M30D' dur2='-PT9S'/>
<date dur1='P12M29D' dur2='P365D'/>
<date dur1='P1000Y' dur2='PT45.65S'/>
<date dur1='PT23H59M0S' dur2='PT59S'/>
<date dur1='PT23H59M0S' dur2='PT61S'/>
<date dur1='P1000Y11M30DT23H59M0.1S' dur2='PT59.9S'/>
<date dur1='P1000Y11M30DT23H59M1S' dur2='PT59S'/>
<date dur1='P1000Y11M30D' dur2='-P1DT9S'/>
</page>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
extension-element-prefixes="date">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="date">
add-duration : <xsl:value-of select="@dur1"/> + <xsl:value-of select="@dur2"/>
result : <xsl:value-of select="date:add-duration(@dur1,@dur2)"/>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,13 @@
add-duration : 2001 + -P1Y
result :
add-duration : P1M + 2000-01-01
result :
add-duration : P11M30D + -P12M
result :
add-duration : P11M + -P12D
result :
add-duration : P1000Y11M + -PT9S
result :
add-duration : -P1000Y + PT9S
result :

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<page>
<!-- invalid types -->
<date dur1='2001' dur2='-P1Y'/>
<date dur1='P1M' dur2='2000-01-01'/>
<!-- cannot express result -->
<date dur1='P11M30D' dur2='-P12M'/>
<date dur1='P11M' dur2='-P12D'/>
<date dur1='P1000Y11M' dur2='-PT9S'/>
<date dur1='-P1000Y' dur2='PT9S'/>
</page>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
extension-element-prefixes="date">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="date">
add-duration : <xsl:value-of select="@dur1"/> + <xsl:value-of select="@dur2"/>
result : <xsl:value-of select="date:add-duration(@dur1,@dur2)"/>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,29 @@
add : 2000-01-01T01:01:00Z + PT0S
result : 2000-01-01T01:01:00Z
add : 2000-01-01T01:01:00Z + PT60S
result : 2000-01-01T01:02:00Z
add : 2000-01-01T01:01:00Z + PT59S
result : 2000-01-01T01:01:59Z
add : 2000-01-01 + PT86400S
result : 2000-01-02
add : 2000-02-29 + PT86400S
result : 2000-03-01
add : 2000-01-01 + -PT86400S
result : 1999-12-31
add : -0001-12-31T23:59:59 + PT1S
result : 0001-01-01T00:00:00Z
add : 0001-01-01T00:00:00 + -PT1S
result : -0001-12-31T23:59:59Z
add : 2000-01-01T00:00:00Z + -PT59S
result : 1999-12-31T23:59:01Z
add : -0001 + -PT59S
result : -0002-12-31T23:59:01Z
add : -0001 + P1Y
result : 0001
add : 2000-01 + -PT86400S
result : 1999-12-31
add : 2000-01 + -P1D
result : 1999-12-31
add : 1970-01-01T00:00:00-00:30 + -PT30S
result : 1969-12-31T23:29:30Z

View File

@@ -0,0 +1,18 @@
<?xml version="1.0"?>
<page>
<date date='2000-01-01T01:01:00Z' dur='PT0S'/>
<date date='2000-01-01T01:01:00Z' dur='PT60S'/>
<date date='2000-01-01T01:01:00Z' dur='PT59S'/>
<date date='2000-01-01' dur='PT86400S'/>
<date date='2000-02-29' dur='PT86400S'/>
<date date='2000-01-01' dur='-PT86400S'/>
<date date='-0001-12-31T23:59:59' dur='PT1S'/>
<date date='0001-01-01T00:00:00' dur='-PT1S'/>
<date date='2000-01-01T00:00:00Z' dur='-PT59S'/>
<date date='-0001' dur='-PT59S'/>
<date date='-0001' dur='P1Y'/>
<date date='2000-01' dur='-PT86400S'/>
<date date='2000-01' dur='-P1D'/>
<date date='1970-01-01T00:00:00-00:30' dur='-PT30S'/>
</page>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
extension-element-prefixes="date">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="date">
add : <xsl:value-of select="@date"/> + <xsl:value-of select="@dur"/>
result : <xsl:value-of select="date:add(@date,@dur)"/>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,13 @@
add : PT0S + 2000-01-01T01:01:00Z
result :
add : 2000-01-01T01:01:00Z +
result :
add : + PT60S
result :
add : --10-29 + PT60S
result :
add : ---29 + PT60S
result :
add : 10:31:07 + PT60S
result :

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<page>
<!-- invalid arguments -->
<date date='PT0S' dur='2000-01-01T01:01:00Z'/>
<date date='2000-01-01T01:01:00Z' dur=''/>
<date date='' dur='PT60S'/>
<!-- invalid date/time types -->
<date date="--10-29" dur="PT60S"/>
<date date="---29" dur="PT60S"/>
<date date="10:31:07" dur="PT60S"/>
</page>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
extension-element-prefixes="date">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="date">
add : <xsl:value-of select="@date"/> + <xsl:value-of select="@dur"/>
result : <xsl:value-of select="date:add(@date,@dur)"/>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,23 @@
difference : 2000 - 1999
result : P1Y
difference : 2000-01 - 1999-12
result : P1M
difference : 1999-12 - 2000-01
result : -P1M
difference : 1999-12-31 - 2000-01-01
result : -P1D
difference : 1999 - 2000-01
result : -P1Y
difference : 0002-01-05 - 0001-01-04
result : P366D
difference : 0002-05-05 - 0001-01
result : P1Y4M
difference : -0002-01-05 - 0001-01-04
result : -P729D
difference : 1970-01-01T05:04:03 - 1970-01-01T04:03:02
result : PT1H1M1S
difference : 2000-01-01T05:00:03 - 2000-01-01T04:03:02
result : PT57M1S
difference : 2000-01-01T05:00:03 - 1980-01-01T04:03:02
result : P7305DT57M1S

View File

@@ -0,0 +1,16 @@
<?xml version="1.0"?>
<page>
<!-- valid date/times -->
<date date1='2000' date2='1999'/>
<date date1='2000-01' date2='1999-12'/>
<date date1='1999-12' date2='2000-01'/>
<date date1='1999-12-31' date2='2000-01-01'/>
<date date1='1999' date2='2000-01'/>
<date date1='0002-01-05' date2='0001-01-04'/>
<date date1='0002-05-05' date2='0001-01'/>
<date date1='-0002-01-05' date2='0001-01-04'/>
<date date1='1970-01-01T05:04:03' date2='1970-01-01T04:03:02'/>
<date date1='2000-01-01T05:00:03' date2='2000-01-01T04:03:02'/>
<date date1='2000-01-01T05:00:03' date2='1980-01-01T04:03:02'/>
</page>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
extension-element-prefixes="date">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="date">
difference : <xsl:value-of select="@date1"/> - <xsl:value-of select="@date2"/>
result : <xsl:value-of select="date:difference(@date1,@date2)"/>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,9 @@
difference : 2000-01-01T05:00:03 - ---01
result :
difference : 0002-01-05 - --01-04
result :
difference : 1970-01-01T05:04:03 - 04:03:02
result :
difference : 2000 -
result :

View File

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<page>
<!-- invalid date/time types -->
<date date1='2000-01-01T05:00:03' date2='---01'/>
<date date1='0002-01-05' date2='--01-04'/>
<date date1='1970-01-01T05:04:03' date2='04:03:02'/>
<date date1='2000' date2=''/>
</page>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
extension-element-prefixes="date">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="date">
difference : <xsl:value-of select="@date1"/> - <xsl:value-of select="@date2"/>
result : <xsl:value-of select="date:difference(@date1,@date2)"/>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,29 @@
duration : 60
result : PT1M
duration : 360
result : PT6M
duration : 3600
result : PT1H
duration : 86400
result : P1D
duration : 86400.5
result : P1DT0.5S
duration : 3660
result : PT1H1M
duration : 61
result : PT1M1S
duration : 90061
result : P1DT1H1M1S
duration : 0.5
result : PT0.5S
duration : 0.05
result : PT0.05S
duration : 990.005
result : PT16M30.005S
duration : -60
result : -PT1M
duration : 9999999999999
result : P115740740DT17H46M39S
duration : -2999999999
result : -P34722DT5H19M59S

View File

@@ -0,0 +1,18 @@
<?xml version="1.0"?>
<page>
<date seconds="60"/>
<date seconds="360"/>
<date seconds="3600"/>
<date seconds="86400"/>
<date seconds="86400.5"/>
<date seconds="3660"/>
<date seconds="61"/>
<date seconds="90061"/>
<date seconds="0.5"/>
<date seconds="0.05"/>
<date seconds="990.005"/>
<date seconds="-60"/>
<date seconds="9999999999999"/>
<date seconds="-2999999999"/>
</page>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
extension-element-prefixes="date">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="date">
duration : <xsl:value-of select="@seconds"/>
result : <xsl:value-of select="date:duration(@seconds)"/>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,15 @@
duration : P10Y20M100DT
result :
duration : P-10Y
result :
duration : P10YM100D
result :
duration : P10Y100D10M
result :
duration : P10Y10H
result :
duration : P10Y10Y
result :
duration : P10.0Y
result :

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<page>
<!-- errors -->
<date seconds="P10Y20M100DT"/>
<date seconds="P-10Y"/>
<date seconds="P10YM100D"/>
<date seconds="P10Y100D10M"/>
<date seconds="P10Y10H"/>
<date seconds="P10Y10Y"/>
<date seconds="P10.0Y"/>
</page>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
extension-element-prefixes="date">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="date">
duration : <xsl:value-of select="@seconds"/>
result : <xsl:value-of select="date:duration(@seconds)"/>
</xsl:template>
</xsl:stylesheet>

BIN
tests/exslt/date/gmon.out Normal file

Binary file not shown.

View File

@@ -0,0 +1,37 @@
seconds : PT10M
result : 600
seconds : -P10D
result : -864000
seconds : PT10H
result : 36000
seconds : PT10H10M10.5S
result : 36610.5
seconds : PT0.00001S
result : 0.00001
seconds : PT49.00001S
result : 49.00001
seconds : P0Y0M31DT10H10M10.09S
result : 2715010.09
seconds : -P0Y0M31DT10H10M10.09S
result : -2715010.09
seconds : PT100H100M100.001S
result : 366100.001
seconds : 2001
result : 978307200
seconds : 2001-10-29T10:31:07
result : 1004351467
seconds : 1970-01-01T00:00:00
result : 0
seconds : 1970-01-01T00:00:01
result : 1
seconds : 1969-12-31T23:59:59
result : -1
seconds : 1969-01-01T00:00:00
result : -31536000
seconds : 1971-01-01T00:00:00
result : 31536000
seconds : 0001-01-01T00:00:00
result : -2006054656
seconds : -0001-01-01T00:00:00
result : -2037590656

View File

@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<page>
<!-- valid durations -->
<date duration="PT10M"/>
<date duration="-P10D"/>
<date duration="PT10H"/>
<date duration="PT10H10M10.5S"/>
<date duration="PT0.00001S"/>
<date duration="PT49.00001S"/>
<date duration="P0Y0M31DT10H10M10.09S"/>
<date duration="-P0Y0M31DT10H10M10.09S"/>
<date duration="PT100H100M100.001S"/>
<!-- date/times -->
<date duration="2001"/>
<date duration="2001-10-29T10:31:07"/>
<date duration="1970-01-01T00:00:00"/>
<date duration="1970-01-01T00:00:01"/>
<date duration="1969-12-31T23:59:59"/>
<date duration="1969-01-01T00:00:00"/>
<date duration="1971-01-01T00:00:00"/>
<date duration="0001-01-01T00:00:00"/>
<date duration="-0001-01-01T00:00:00"/>
</page>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
extension-element-prefixes="date">
<xsl:output method="html"/>
<xsl:strip-space elements="*"/>
<xsl:template match="date">
seconds : <xsl:value-of select="@duration"/>
result : <xsl:value-of select="date:seconds(@duration)"/>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,27 @@
seconds : P10H
result : NaN
seconds : P-T10D
result : NaN
seconds : PT-10D
result : NaN
seconds : --PT10H
result : NaN
seconds : PT10H10M.5S
result : NaN
seconds : PYT0.00001S
result : NaN
seconds : PT49.00001
result : NaN
seconds : P0Y0MDT10H10M10.09S
result : NaN
seconds : --10-29
result : NaN
seconds : ---29
result : NaN
seconds : 10:31:07
result : NaN
seconds : P10Y20M100DT40H61M100S
result : NaN
seconds : P10000Y
result : NaN

View File

@@ -0,0 +1,21 @@
<?xml version="1.0"?>
<page>
<!-- invalid duration syntax -->
<date duration="P10H"/>
<date duration="P-T10D"/>
<date duration="PT-10D"/>
<date duration="--PT10H"/>
<date duration="PT10H10M.5S"/>
<date duration="PYT0.00001S"/>
<date duration="PT49.00001"/>
<date duration="P0Y0MDT10H10M10.09S"/>
<!-- invalid date/time type -->
<date duration="--10-29"/>
<date duration="---29"/>
<date duration="10:31:07"/>
<!-- invalid duration values for date:seconds -->
<!-- years and months are not handled by date:seconds() -->
<date duration="P10Y20M100DT40H61M100S"/>
<date duration="P10000Y"/>
</page>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
extension-element-prefixes="date">
<xsl:output method="html"/>
<xsl:strip-space elements="*"/>
<xsl:template match="date">
seconds : <xsl:value-of select="@duration"/>
result : <xsl:value-of select="date:seconds(@duration)"/>
</xsl:template>
</xsl:stylesheet>