mirror of
https://gitlab.gnome.org/GNOME/libxslt
synced 2025-11-27 16:21:14 +03:00
added date:sum routine supplied by Joel Reed
* libexslt/date.c: added date:sum routine supplied by Joel Reed
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
Fri Aug 6 11:05:31 PDT 2004 William Brack <wbrack@mmm.com.hk>
|
||||||
|
|
||||||
|
* libexslt/date.c: added date:sum routine supplied by Joel
|
||||||
|
Reed
|
||||||
|
|
||||||
Wed Aug 4 00:04:13 CEST 2004 Daniel Veillard <daniel@veillard.com>
|
Wed Aug 4 00:04:13 CEST 2004 Daniel Veillard <daniel@veillard.com>
|
||||||
|
|
||||||
* doc/downloads.html doc/xslt.html: fixed a couple of problems
|
* doc/downloads.html doc/xslt.html: fixed a couple of problems
|
||||||
|
|||||||
@@ -253,7 +253,8 @@ dnl
|
|||||||
if [[ "${LOGNAME}" = "veillard" -a "`pwd`" = "/u/veillard/XSLT" ]] || \
|
if [[ "${LOGNAME}" = "veillard" -a "`pwd`" = "/u/veillard/XSLT" ]] || \
|
||||||
[[ "${LOGNAME}" = "bill" -a "`pwd`" = "/home/bill/gnomecvs/xsltest" ]]
|
[[ "${LOGNAME}" = "bill" -a "`pwd`" = "/home/bill/gnomecvs/xsltest" ]]
|
||||||
then
|
then
|
||||||
if test "${with_mem_debug}" = "" ; then
|
if test "${with_mem_debug}" = "" ;
|
||||||
|
then
|
||||||
with_mem_debug="yes"
|
with_mem_debug="yes"
|
||||||
fi
|
fi
|
||||||
CFLAGS="-Wall -g -O -ansi -pedantic -W -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline "
|
CFLAGS="-Wall -g -O -ansi -pedantic -W -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline "
|
||||||
|
|||||||
352
libexslt/date.c
352
libexslt/date.c
@@ -197,7 +197,8 @@ static const unsigned long dayInLeapYearByMonth[12] =
|
|||||||
* Returns 0 or the error code
|
* Returns 0 or the error code
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
_exsltDateParseGYear (exsltDateValDatePtr dt, const xmlChar **str) {
|
_exsltDateParseGYear (exsltDateValDatePtr dt, const xmlChar **str)
|
||||||
|
{
|
||||||
const xmlChar *cur = *str, *firstChar;
|
const xmlChar *cur = *str, *firstChar;
|
||||||
int isneg = 0, digcnt = 0;
|
int isneg = 0, digcnt = 0;
|
||||||
|
|
||||||
@@ -366,7 +367,8 @@ _exsltDateParseGYear (exsltDateValDatePtr dt, const xmlChar **str) {
|
|||||||
* Returns 0 or the error code
|
* Returns 0 or the error code
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
_exsltDateParseGMonth (exsltDateValDatePtr dt, const xmlChar **str) {
|
_exsltDateParseGMonth (exsltDateValDatePtr dt, const xmlChar **str)
|
||||||
|
{
|
||||||
const xmlChar *cur = *str;
|
const xmlChar *cur = *str;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
@@ -410,7 +412,8 @@ _exsltDateParseGMonth (exsltDateValDatePtr dt, const xmlChar **str) {
|
|||||||
* Returns 0 or the error code
|
* Returns 0 or the error code
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
_exsltDateParseGDay (exsltDateValDatePtr dt, const xmlChar **str) {
|
_exsltDateParseGDay (exsltDateValDatePtr dt, const xmlChar **str)
|
||||||
|
{
|
||||||
const xmlChar *cur = *str;
|
const xmlChar *cur = *str;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
@@ -472,7 +475,8 @@ _exsltDateParseGDay (exsltDateValDatePtr dt, const xmlChar **str) {
|
|||||||
* Returns 0 or the error code
|
* Returns 0 or the error code
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
_exsltDateParseTime (exsltDateValDatePtr dt, const xmlChar **str) {
|
_exsltDateParseTime (exsltDateValDatePtr dt, const xmlChar **str)
|
||||||
|
{
|
||||||
const xmlChar *cur = *str;
|
const xmlChar *cur = *str;
|
||||||
unsigned int hour = 0; /* use temp var in case str is not xs:time */
|
unsigned int hour = 0; /* use temp var in case str is not xs:time */
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
@@ -543,7 +547,8 @@ _exsltDateParseTime (exsltDateValDatePtr dt, const xmlChar **str) {
|
|||||||
* Returns 0 or the error code
|
* Returns 0 or the error code
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
_exsltDateParseTimeZone (exsltDateValDatePtr dt, const xmlChar **str) {
|
_exsltDateParseTimeZone (exsltDateValDatePtr dt, const xmlChar **str)
|
||||||
|
{
|
||||||
const xmlChar *cur = *str;
|
const xmlChar *cur = *str;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
@@ -649,7 +654,8 @@ _exsltDateParseTimeZone (exsltDateValDatePtr dt, const xmlChar **str) {
|
|||||||
* Returns the #exsltDateValPtr
|
* Returns the #exsltDateValPtr
|
||||||
*/
|
*/
|
||||||
static exsltDateValPtr
|
static exsltDateValPtr
|
||||||
exsltDateCreateDate (exsltDateType type) {
|
exsltDateCreateDate (exsltDateType type)
|
||||||
|
{
|
||||||
exsltDateValPtr ret;
|
exsltDateValPtr ret;
|
||||||
|
|
||||||
ret = (exsltDateValPtr) xmlMalloc(sizeof(exsltDateVal));
|
ret = (exsltDateValPtr) xmlMalloc(sizeof(exsltDateVal));
|
||||||
@@ -737,7 +743,8 @@ exsltDateFreeDate (exsltDateValPtr date) {
|
|||||||
* Returns the current date and time.
|
* Returns the current date and time.
|
||||||
*/
|
*/
|
||||||
static exsltDateValPtr
|
static exsltDateValPtr
|
||||||
exsltDateCurrent (void) {
|
exsltDateCurrent (void)
|
||||||
|
{
|
||||||
struct tm *localTm, *gmTm;
|
struct tm *localTm, *gmTm;
|
||||||
time_t secs;
|
time_t secs;
|
||||||
#if HAVE_LOCALTIME_R
|
#if HAVE_LOCALTIME_R
|
||||||
@@ -791,7 +798,8 @@ exsltDateCurrent (void) {
|
|||||||
* Returns a newly built #exsltDateValPtr of NULL in case of error
|
* Returns a newly built #exsltDateValPtr of NULL in case of error
|
||||||
*/
|
*/
|
||||||
static exsltDateValPtr
|
static exsltDateValPtr
|
||||||
exsltDateParse (const xmlChar *dateTime) {
|
exsltDateParse (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
exsltDateValPtr dt;
|
exsltDateValPtr dt;
|
||||||
int ret;
|
int ret;
|
||||||
const xmlChar *cur = dateTime;
|
const xmlChar *cur = dateTime;
|
||||||
@@ -940,7 +948,8 @@ error:
|
|||||||
* Returns a newly built #exsltDateValPtr of NULL in case of error
|
* Returns a newly built #exsltDateValPtr of NULL in case of error
|
||||||
*/
|
*/
|
||||||
static exsltDateValPtr
|
static exsltDateValPtr
|
||||||
exsltDateParseDuration (const xmlChar *duration) {
|
exsltDateParseDuration (const xmlChar *duration)
|
||||||
|
{
|
||||||
const xmlChar *cur = duration;
|
const xmlChar *cur = duration;
|
||||||
exsltDateValPtr dur;
|
exsltDateValPtr dur;
|
||||||
int isneg = 0;
|
int isneg = 0;
|
||||||
@@ -1065,7 +1074,8 @@ error:
|
|||||||
* Returns a newly allocated string, or NULL in case of error
|
* Returns a newly allocated string, or NULL in case of error
|
||||||
*/
|
*/
|
||||||
static xmlChar *
|
static xmlChar *
|
||||||
exsltDateFormatDuration (const exsltDateValDurationPtr dt) {
|
exsltDateFormatDuration (const exsltDateValDurationPtr dt)
|
||||||
|
{
|
||||||
xmlChar buf[100], *cur = buf;
|
xmlChar buf[100], *cur = buf;
|
||||||
double secs, days;
|
double secs, days;
|
||||||
double years, months;
|
double years, months;
|
||||||
@@ -1143,7 +1153,8 @@ exsltDateFormatDuration (const exsltDateValDurationPtr dt) {
|
|||||||
* Returns a newly allocated string, or NULL in case of error
|
* Returns a newly allocated string, or NULL in case of error
|
||||||
*/
|
*/
|
||||||
static xmlChar *
|
static xmlChar *
|
||||||
exsltDateFormatDateTime (const exsltDateValDatePtr dt) {
|
exsltDateFormatDateTime (const exsltDateValDatePtr dt)
|
||||||
|
{
|
||||||
xmlChar buf[100], *cur = buf;
|
xmlChar buf[100], *cur = buf;
|
||||||
|
|
||||||
if ((dt == NULL) || !VALID_DATETIME(dt))
|
if ((dt == NULL) || !VALID_DATETIME(dt))
|
||||||
@@ -1168,7 +1179,8 @@ exsltDateFormatDateTime (const exsltDateValDatePtr dt) {
|
|||||||
* Returns a newly allocated string, or NULL in case of error
|
* Returns a newly allocated string, or NULL in case of error
|
||||||
*/
|
*/
|
||||||
static xmlChar *
|
static xmlChar *
|
||||||
exsltDateFormatDate (const exsltDateValDatePtr dt) {
|
exsltDateFormatDate (const exsltDateValDatePtr dt)
|
||||||
|
{
|
||||||
xmlChar buf[100], *cur = buf;
|
xmlChar buf[100], *cur = buf;
|
||||||
|
|
||||||
if ((dt == NULL) || !VALID_DATETIME(dt))
|
if ((dt == NULL) || !VALID_DATETIME(dt))
|
||||||
@@ -1192,7 +1204,8 @@ exsltDateFormatDate (const exsltDateValDatePtr dt) {
|
|||||||
* Returns a newly allocated string, or NULL in case of error
|
* Returns a newly allocated string, or NULL in case of error
|
||||||
*/
|
*/
|
||||||
static xmlChar *
|
static xmlChar *
|
||||||
exsltDateFormatTime (const exsltDateValDatePtr dt) {
|
exsltDateFormatTime (const exsltDateValDatePtr dt)
|
||||||
|
{
|
||||||
xmlChar buf[100], *cur = buf;
|
xmlChar buf[100], *cur = buf;
|
||||||
|
|
||||||
if ((dt == NULL) || !VALID_TIME(dt))
|
if ((dt == NULL) || !VALID_TIME(dt))
|
||||||
@@ -1218,7 +1231,8 @@ exsltDateFormatTime (const exsltDateValDatePtr dt) {
|
|||||||
* Returns a newly allocated string, or NULL in case of error
|
* Returns a newly allocated string, or NULL in case of error
|
||||||
*/
|
*/
|
||||||
static xmlChar *
|
static xmlChar *
|
||||||
exsltDateFormat (const exsltDateValPtr dt) {
|
exsltDateFormat (const exsltDateValPtr dt)
|
||||||
|
{
|
||||||
|
|
||||||
if (dt == NULL)
|
if (dt == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -1703,7 +1717,8 @@ _exsltDateAddDuration (exsltDateValPtr x, exsltDateValPtr y)
|
|||||||
* Returns the current date and time as a date/time string.
|
* Returns the current date and time as a date/time string.
|
||||||
*/
|
*/
|
||||||
static xmlChar *
|
static xmlChar *
|
||||||
exsltDateDateTime (void) {
|
exsltDateDateTime (void)
|
||||||
|
{
|
||||||
xmlChar *ret = NULL;
|
xmlChar *ret = NULL;
|
||||||
#ifdef WITH_TIME
|
#ifdef WITH_TIME
|
||||||
exsltDateValPtr cur;
|
exsltDateValPtr cur;
|
||||||
@@ -1735,7 +1750,8 @@ exsltDateDateTime (void) {
|
|||||||
* formats, returns NULL.
|
* formats, returns NULL.
|
||||||
*/
|
*/
|
||||||
static xmlChar *
|
static xmlChar *
|
||||||
exsltDateDate (const xmlChar *dateTime) {
|
exsltDateDate (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
exsltDateValPtr dt = NULL;
|
exsltDateValPtr dt = NULL;
|
||||||
xmlChar *ret = NULL;
|
xmlChar *ret = NULL;
|
||||||
|
|
||||||
@@ -1778,7 +1794,8 @@ exsltDateDate (const xmlChar *dateTime) {
|
|||||||
* formats, returns NULL.
|
* formats, returns NULL.
|
||||||
*/
|
*/
|
||||||
static xmlChar *
|
static xmlChar *
|
||||||
exsltDateTime (const xmlChar *dateTime) {
|
exsltDateTime (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
exsltDateValPtr dt = NULL;
|
exsltDateValPtr dt = NULL;
|
||||||
xmlChar *ret = NULL;
|
xmlChar *ret = NULL;
|
||||||
|
|
||||||
@@ -1825,7 +1842,8 @@ exsltDateTime (const xmlChar *dateTime) {
|
|||||||
* returned.
|
* returned.
|
||||||
*/
|
*/
|
||||||
static double
|
static double
|
||||||
exsltDateYear (const xmlChar *dateTime) {
|
exsltDateYear (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
exsltDateValPtr dt;
|
exsltDateValPtr dt;
|
||||||
double ret;
|
double ret;
|
||||||
|
|
||||||
@@ -1873,7 +1891,8 @@ exsltDateYear (const xmlChar *dateTime) {
|
|||||||
* returned.
|
* returned.
|
||||||
*/
|
*/
|
||||||
static xmlXPathObjectPtr
|
static xmlXPathObjectPtr
|
||||||
exsltDateLeapYear (const xmlChar *dateTime) {
|
exsltDateLeapYear (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
double year;
|
double year;
|
||||||
|
|
||||||
year = exsltDateYear(dateTime);
|
year = exsltDateYear(dateTime);
|
||||||
@@ -1908,7 +1927,8 @@ exsltDateLeapYear (const xmlChar *dateTime) {
|
|||||||
* returned.
|
* returned.
|
||||||
*/
|
*/
|
||||||
static double
|
static double
|
||||||
exsltDateMonthInYear (const xmlChar *dateTime) {
|
exsltDateMonthInYear (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
exsltDateValPtr dt;
|
exsltDateValPtr dt;
|
||||||
double ret;
|
double ret;
|
||||||
|
|
||||||
@@ -1960,7 +1980,8 @@ exsltDateMonthInYear (const xmlChar *dateTime) {
|
|||||||
* 'October', 'November' or 'December'.
|
* 'October', 'November' or 'December'.
|
||||||
*/
|
*/
|
||||||
static const xmlChar *
|
static const xmlChar *
|
||||||
exsltDateMonthName (const xmlChar *dateTime) {
|
exsltDateMonthName (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
static const xmlChar monthNames[13][10] = {
|
static const xmlChar monthNames[13][10] = {
|
||||||
{ 0 },
|
{ 0 },
|
||||||
{ 'J', 'a', 'n', 'u', 'a', 'r', 'y', 0 },
|
{ 'J', 'a', 'n', 'u', 'a', 'r', 'y', 0 },
|
||||||
@@ -2007,7 +2028,8 @@ exsltDateMonthName (const xmlChar *dateTime) {
|
|||||||
* 'Dec'.
|
* 'Dec'.
|
||||||
*/
|
*/
|
||||||
static const xmlChar *
|
static const xmlChar *
|
||||||
exsltDateMonthAbbreviation (const xmlChar *dateTime) {
|
exsltDateMonthAbbreviation (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
static const xmlChar monthAbbreviations[13][4] = {
|
static const xmlChar monthAbbreviations[13][4] = {
|
||||||
{ 0 },
|
{ 0 },
|
||||||
{ 'J', 'a', 'n', 0 },
|
{ 'J', 'a', 'n', 0 },
|
||||||
@@ -2052,7 +2074,8 @@ exsltDateMonthAbbreviation (const xmlChar *dateTime) {
|
|||||||
* returned.
|
* returned.
|
||||||
*/
|
*/
|
||||||
static double
|
static double
|
||||||
exsltDateWeekInYear (const xmlChar *dateTime) {
|
exsltDateWeekInYear (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
exsltDateValPtr dt;
|
exsltDateValPtr dt;
|
||||||
long fdiy, fdiw, ret;
|
long fdiy, fdiw, ret;
|
||||||
|
|
||||||
@@ -2114,7 +2137,8 @@ exsltDateWeekInYear (const xmlChar *dateTime) {
|
|||||||
* returned.
|
* returned.
|
||||||
*/
|
*/
|
||||||
static double
|
static double
|
||||||
exsltDateWeekInMonth (const xmlChar *dateTime) {
|
exsltDateWeekInMonth (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
exsltDateValPtr dt;
|
exsltDateValPtr dt;
|
||||||
long fdiy, fdiw, ret;
|
long fdiy, fdiw, ret;
|
||||||
|
|
||||||
@@ -2167,7 +2191,8 @@ exsltDateWeekInMonth (const xmlChar *dateTime) {
|
|||||||
* returned.
|
* returned.
|
||||||
*/
|
*/
|
||||||
static double
|
static double
|
||||||
exsltDateDayInYear (const xmlChar *dateTime) {
|
exsltDateDayInYear (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
exsltDateValPtr dt;
|
exsltDateValPtr dt;
|
||||||
long ret;
|
long ret;
|
||||||
|
|
||||||
@@ -2216,7 +2241,8 @@ exsltDateDayInYear (const xmlChar *dateTime) {
|
|||||||
* returned.
|
* returned.
|
||||||
*/
|
*/
|
||||||
static double
|
static double
|
||||||
exsltDateDayInMonth (const xmlChar *dateTime) {
|
exsltDateDayInMonth (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
exsltDateValPtr dt;
|
exsltDateValPtr dt;
|
||||||
double ret;
|
double ret;
|
||||||
|
|
||||||
@@ -2263,7 +2289,8 @@ exsltDateDayInMonth (const xmlChar *dateTime) {
|
|||||||
* returned.
|
* returned.
|
||||||
*/
|
*/
|
||||||
static double
|
static double
|
||||||
exsltDateDayOfWeekInMonth (const xmlChar *dateTime) {
|
exsltDateDayOfWeekInMonth (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
exsltDateValPtr dt;
|
exsltDateValPtr dt;
|
||||||
long ret;
|
long ret;
|
||||||
|
|
||||||
@@ -2311,7 +2338,8 @@ exsltDateDayOfWeekInMonth (const xmlChar *dateTime) {
|
|||||||
* Monday and so on up to 7 for Saturday.
|
* Monday and so on up to 7 for Saturday.
|
||||||
*/
|
*/
|
||||||
static double
|
static double
|
||||||
exsltDateDayInWeek (const xmlChar *dateTime) {
|
exsltDateDayInWeek (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
exsltDateValPtr dt;
|
exsltDateValPtr dt;
|
||||||
long diy, ret;
|
long diy, ret;
|
||||||
|
|
||||||
@@ -2362,7 +2390,8 @@ exsltDateDayInWeek (const xmlChar *dateTime) {
|
|||||||
* 'Tuesday', 'Wednesday', 'Thursday' or 'Friday'.
|
* 'Tuesday', 'Wednesday', 'Thursday' or 'Friday'.
|
||||||
*/
|
*/
|
||||||
static const xmlChar *
|
static const xmlChar *
|
||||||
exsltDateDayName (const xmlChar *dateTime) {
|
exsltDateDayName (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
static const xmlChar dayNames[8][10] = {
|
static const xmlChar dayNames[8][10] = {
|
||||||
{ 0 },
|
{ 0 },
|
||||||
{ 'S', 'u', 'n', 'd', 'a', 'y', 0 },
|
{ 'S', 'u', 'n', 'd', 'a', 'y', 0 },
|
||||||
@@ -2401,7 +2430,8 @@ exsltDateDayName (const xmlChar *dateTime) {
|
|||||||
* 'Sun', 'Mon', 'Tue', 'Wed', 'Thu' or 'Fri'.
|
* 'Sun', 'Mon', 'Tue', 'Wed', 'Thu' or 'Fri'.
|
||||||
*/
|
*/
|
||||||
static const xmlChar *
|
static const xmlChar *
|
||||||
exsltDateDayAbbreviation (const xmlChar *dateTime) {
|
exsltDateDayAbbreviation (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
static const xmlChar dayAbbreviations[8][4] = {
|
static const xmlChar dayAbbreviations[8][4] = {
|
||||||
{ 0 },
|
{ 0 },
|
||||||
{ 'S', 'u', 'n', 0 },
|
{ 'S', 'u', 'n', 0 },
|
||||||
@@ -2438,7 +2468,8 @@ exsltDateDayAbbreviation (const xmlChar *dateTime) {
|
|||||||
* returned.
|
* returned.
|
||||||
*/
|
*/
|
||||||
static double
|
static double
|
||||||
exsltDateHourInDay (const xmlChar *dateTime) {
|
exsltDateHourInDay (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
exsltDateValPtr dt;
|
exsltDateValPtr dt;
|
||||||
double ret;
|
double ret;
|
||||||
|
|
||||||
@@ -2483,7 +2514,8 @@ exsltDateHourInDay (const xmlChar *dateTime) {
|
|||||||
* returned.
|
* returned.
|
||||||
*/
|
*/
|
||||||
static double
|
static double
|
||||||
exsltDateMinuteInHour (const xmlChar *dateTime) {
|
exsltDateMinuteInHour (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
exsltDateValPtr dt;
|
exsltDateValPtr dt;
|
||||||
double ret;
|
double ret;
|
||||||
|
|
||||||
@@ -2530,7 +2562,8 @@ exsltDateMinuteInHour (const xmlChar *dateTime) {
|
|||||||
* Returns the second or NaN.
|
* Returns the second or NaN.
|
||||||
*/
|
*/
|
||||||
static double
|
static double
|
||||||
exsltDateSecondInMinute (const xmlChar *dateTime) {
|
exsltDateSecondInMinute (const xmlChar *dateTime)
|
||||||
|
{
|
||||||
exsltDateValPtr dt;
|
exsltDateValPtr dt;
|
||||||
double ret;
|
double ret;
|
||||||
|
|
||||||
@@ -2671,6 +2704,100 @@ exsltDateAddDuration (const xmlChar *xstr, const xmlChar *ystr)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* exsltDateSumFunction:
|
||||||
|
* @ns: a node set of duration strings
|
||||||
|
*
|
||||||
|
* The date:sum function adds a set of durations together.
|
||||||
|
* The string values of the nodes in the node set passed as an argument
|
||||||
|
* are interpreted as durations and added together as if using the
|
||||||
|
* date:add-duration function. (from exslt.org)
|
||||||
|
*
|
||||||
|
* The return value is a string in the format defined for xs:duration
|
||||||
|
* in [3.2.6 duration] of [XML Schema Part 2: Datatypes].
|
||||||
|
* The durations can usually be added by summing the numbers given for
|
||||||
|
* each of the components in the durations. However, if the durations
|
||||||
|
* are differently signed, then this sometimes results in durations
|
||||||
|
* that are impossible to express in this syntax (e.g. 'P1M' + '-P1D').
|
||||||
|
* In these cases, the function returns an empty string ('').
|
||||||
|
*
|
||||||
|
* Returns duration string or NULL.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
exsltDateSumFunction (xmlXPathParserContextPtr ctxt, int nargs)
|
||||||
|
{
|
||||||
|
xmlNodeSetPtr ns;
|
||||||
|
void *user = NULL;
|
||||||
|
xmlChar *tmp;
|
||||||
|
exsltDateValPtr x, total;
|
||||||
|
xmlChar *ret;
|
||||||
|
long carry;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (nargs != 1) {
|
||||||
|
xmlXPathSetArityError (ctxt);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We need to delay the freeing of value->user */
|
||||||
|
if ((ctxt->value != NULL) && ctxt->value->boolval != 0) {
|
||||||
|
user = ctxt->value->user;
|
||||||
|
ctxt->value->boolval = 0;
|
||||||
|
ctxt->value->user = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
ns = xmlXPathPopNodeSet (ctxt);
|
||||||
|
if (xmlXPathCheckError (ctxt))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ((ns == NULL) || (ns->nodeNr == 0))
|
||||||
|
return;
|
||||||
|
|
||||||
|
total = exsltDateCreateDate (XS_DURATION);
|
||||||
|
|
||||||
|
for (i = 0; i < ns->nodeNr; i++) {
|
||||||
|
|
||||||
|
tmp = xmlXPathCastNodeToString (ns->nodeTab[i]);
|
||||||
|
if (tmp == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
x = exsltDateParseDuration (tmp);
|
||||||
|
if (x == NULL) {
|
||||||
|
xmlFree (tmp);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* months */
|
||||||
|
total->value.dur.mon += x->value.dur.mon;
|
||||||
|
|
||||||
|
/* seconds */
|
||||||
|
total->value.dur.sec += x->value.dur.sec;
|
||||||
|
carry = (long) FQUOTIENT (total->value.dur.sec, SECS_PER_DAY);
|
||||||
|
if (total->value.dur.sec != 0.0) {
|
||||||
|
total->value.dur.sec =
|
||||||
|
MODULO (total->value.dur.sec, SECS_PER_DAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* days */
|
||||||
|
total->value.dur.day += x->value.dur.day + carry;
|
||||||
|
|
||||||
|
exsltDateFreeDate (x);
|
||||||
|
xmlFree (tmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = exsltDateFormatDuration (&(total->value.dur));
|
||||||
|
exsltDateFreeDate (total);
|
||||||
|
|
||||||
|
xmlXPathFreeNodeSet (ns);
|
||||||
|
if (user != NULL)
|
||||||
|
xmlFreeNodeList ((xmlNodePtr) user);
|
||||||
|
|
||||||
|
if (ret == NULL)
|
||||||
|
xmlXPathReturnEmptyString (ctxt);
|
||||||
|
else
|
||||||
|
xmlXPathReturnString (ctxt, ret);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* exsltDateSeconds:
|
* exsltDateSeconds:
|
||||||
* @dateTime: a date/time string
|
* @dateTime: a date/time string
|
||||||
@@ -2914,7 +3041,8 @@ exsltDateDateTimeFunction (xmlXPathParserContextPtr ctxt, int nargs)
|
|||||||
* Wraps exsltDateDate() for use by the XPath engine.
|
* Wraps exsltDateDate() for use by the XPath engine.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
exsltDateDateFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
exsltDateDateFunction (xmlXPathParserContextPtr ctxt, int nargs)
|
||||||
|
{
|
||||||
xmlChar *ret, *dt = NULL;
|
xmlChar *ret, *dt = NULL;
|
||||||
|
|
||||||
if ((nargs < 0) || (nargs > 1)) {
|
if ((nargs < 0) || (nargs > 1)) {
|
||||||
@@ -2952,7 +3080,8 @@ exsltDateDateFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
|||||||
* Wraps exsltDateTime() for use by the XPath engine.
|
* Wraps exsltDateTime() for use by the XPath engine.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
exsltDateTimeFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
exsltDateTimeFunction (xmlXPathParserContextPtr ctxt, int nargs)
|
||||||
|
{
|
||||||
xmlChar *ret, *dt = NULL;
|
xmlChar *ret, *dt = NULL;
|
||||||
|
|
||||||
if ((nargs < 0) || (nargs > 1)) {
|
if ((nargs < 0) || (nargs > 1)) {
|
||||||
@@ -2990,7 +3119,8 @@ exsltDateTimeFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
|||||||
* Wraps exsltDateYear() for use by the XPath engine.
|
* Wraps exsltDateYear() for use by the XPath engine.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
exsltDateYearFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
exsltDateYearFunction (xmlXPathParserContextPtr ctxt, int nargs)
|
||||||
|
{
|
||||||
xmlChar *dt = NULL;
|
xmlChar *dt = NULL;
|
||||||
double ret;
|
double ret;
|
||||||
|
|
||||||
@@ -3023,7 +3153,8 @@ exsltDateYearFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
|||||||
* Wraps exsltDateLeapYear() for use by the XPath engine.
|
* Wraps exsltDateLeapYear() for use by the XPath engine.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
exsltDateLeapYearFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
exsltDateLeapYearFunction (xmlXPathParserContextPtr ctxt, int nargs)
|
||||||
|
{
|
||||||
xmlChar *dt = NULL;
|
xmlChar *dt = NULL;
|
||||||
xmlXPathObjectPtr ret;
|
xmlXPathObjectPtr ret;
|
||||||
|
|
||||||
@@ -3093,7 +3224,8 @@ X_IN_Y(Month,Year)
|
|||||||
* Wraps exsltDateMonthName() for use by the XPath engine.
|
* Wraps exsltDateMonthName() for use by the XPath engine.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
exsltDateMonthNameFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
exsltDateMonthNameFunction (xmlXPathParserContextPtr ctxt, int nargs)
|
||||||
|
{
|
||||||
xmlChar *dt = NULL;
|
xmlChar *dt = NULL;
|
||||||
const xmlChar *ret;
|
const xmlChar *ret;
|
||||||
|
|
||||||
@@ -3220,7 +3352,8 @@ X_IN_Y(Day,Week)
|
|||||||
* Wraps exsltDateDayName() for use by the XPath engine.
|
* Wraps exsltDateDayName() for use by the XPath engine.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
exsltDateDayNameFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
exsltDateDayNameFunction (xmlXPathParserContextPtr ctxt, int nargs)
|
||||||
|
{
|
||||||
xmlChar *dt = NULL;
|
xmlChar *dt = NULL;
|
||||||
const xmlChar *ret;
|
const xmlChar *ret;
|
||||||
|
|
||||||
@@ -3256,7 +3389,8 @@ exsltDateDayNameFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
|||||||
* Wraps exsltDateDayAbbreviation() for use by the XPath engine.
|
* Wraps exsltDateDayAbbreviation() for use by the XPath engine.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
exsltDateDayAbbreviationFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
exsltDateDayAbbreviationFunction (xmlXPathParserContextPtr ctxt, int nargs)
|
||||||
|
{
|
||||||
xmlChar *dt = NULL;
|
xmlChar *dt = NULL;
|
||||||
const xmlChar *ret;
|
const xmlChar *ret;
|
||||||
|
|
||||||
@@ -3320,7 +3454,8 @@ X_IN_Y(Second,Minute)
|
|||||||
* Wraps exsltDateSeconds() for use by the XPath engine.
|
* Wraps exsltDateSeconds() for use by the XPath engine.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
exsltDateSecondsFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
exsltDateSecondsFunction (xmlXPathParserContextPtr ctxt, int nargs)
|
||||||
|
{
|
||||||
xmlChar *str = NULL;
|
xmlChar *str = NULL;
|
||||||
double ret;
|
double ret;
|
||||||
|
|
||||||
@@ -3352,7 +3487,8 @@ exsltDateSecondsFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
|||||||
* Wraps exsltDateAdd() for use by the XPath processor.
|
* Wraps exsltDateAdd() for use by the XPath processor.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
exsltDateAddFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
exsltDateAddFunction (xmlXPathParserContextPtr ctxt, int nargs)
|
||||||
|
{
|
||||||
xmlChar *ret, *xstr, *ystr;
|
xmlChar *ret, *xstr, *ystr;
|
||||||
|
|
||||||
if (nargs != 2) {
|
if (nargs != 2) {
|
||||||
@@ -3388,7 +3524,8 @@ exsltDateAddFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
|||||||
* Wraps exsltDateAddDuration() for use by the XPath processor.
|
* Wraps exsltDateAddDuration() for use by the XPath processor.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
exsltDateAddDurationFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
exsltDateAddDurationFunction (xmlXPathParserContextPtr ctxt, int nargs)
|
||||||
|
{
|
||||||
xmlChar *ret, *xstr, *ystr;
|
xmlChar *ret, *xstr, *ystr;
|
||||||
|
|
||||||
if (nargs != 2) {
|
if (nargs != 2) {
|
||||||
@@ -3424,7 +3561,8 @@ exsltDateAddDurationFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
|||||||
* Wraps exsltDateDifference() for use by the XPath processor.
|
* Wraps exsltDateDifference() for use by the XPath processor.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
exsltDateDifferenceFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
exsltDateDifferenceFunction (xmlXPathParserContextPtr ctxt, int nargs)
|
||||||
|
{
|
||||||
xmlChar *ret, *xstr, *ystr;
|
xmlChar *ret, *xstr, *ystr;
|
||||||
|
|
||||||
if (nargs != 2) {
|
if (nargs != 2) {
|
||||||
@@ -3460,7 +3598,8 @@ exsltDateDifferenceFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
|||||||
* Wraps exsltDateDuration() for use by the XPath engine
|
* Wraps exsltDateDuration() for use by the XPath engine
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
exsltDateDurationFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
exsltDateDurationFunction (xmlXPathParserContextPtr ctxt, int nargs)
|
||||||
|
{
|
||||||
xmlChar *ret;
|
xmlChar *ret;
|
||||||
xmlChar *number = NULL;
|
xmlChar *number = NULL;
|
||||||
|
|
||||||
@@ -3494,80 +3633,83 @@ exsltDateDurationFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
|||||||
* Registers the EXSLT - Dates and Times module
|
* Registers the EXSLT - Dates and Times module
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
exsltDateRegister(void)
|
exsltDateRegister (void)
|
||||||
{
|
{
|
||||||
|
xsltRegisterExtModuleFunction ((const xmlChar *) "add",
|
||||||
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
|
exsltDateAddFunction);
|
||||||
|
xsltRegisterExtModuleFunction ((const xmlChar *) "add-duration",
|
||||||
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
|
exsltDateAddDurationFunction);
|
||||||
|
xsltRegisterExtModuleFunction ((const xmlChar *) "date",
|
||||||
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
|
exsltDateDateFunction);
|
||||||
#ifdef WITH_TIME
|
#ifdef WITH_TIME
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "date-time",
|
xsltRegisterExtModuleFunction ((const xmlChar *) "date-time",
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
exsltDateDateTimeFunction);
|
exsltDateDateTimeFunction);
|
||||||
#endif
|
#endif
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "date",
|
xsltRegisterExtModuleFunction ((const xmlChar *) "day-abbreviation",
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
|
||||||
exsltDateDateFunction);
|
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "time",
|
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
|
||||||
exsltDateTimeFunction);
|
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "year",
|
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
|
||||||
exsltDateYearFunction);
|
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "leap-year",
|
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
|
||||||
exsltDateLeapYearFunction);
|
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "month-in-year",
|
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
|
||||||
exsltDateMonthInYearFunction);
|
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "month-name",
|
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
|
||||||
exsltDateMonthNameFunction);
|
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "month-abbreviation",
|
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
|
||||||
exsltDateMonthAbbreviationFunction);
|
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "week-in-year",
|
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
|
||||||
exsltDateWeekInYearFunction);
|
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "week-in-month",
|
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
|
||||||
exsltDateWeekInMonthFunction);
|
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "day-in-year",
|
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
|
||||||
exsltDateDayInYearFunction);
|
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "day-in-month",
|
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
|
||||||
exsltDateDayInMonthFunction);
|
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "day-of-week-in-month",
|
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
|
||||||
exsltDateDayOfWeekInMonthFunction);
|
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "day-in-week",
|
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
|
||||||
exsltDateDayInWeekFunction);
|
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "day-name",
|
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
|
||||||
exsltDateDayNameFunction);
|
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "day-abbreviation",
|
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
exsltDateDayAbbreviationFunction);
|
exsltDateDayAbbreviationFunction);
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "hour-in-day",
|
xsltRegisterExtModuleFunction ((const xmlChar *) "day-in-month",
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
exsltDateHourInDayFunction);
|
exsltDateDayInMonthFunction);
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "minute-in-hour",
|
xsltRegisterExtModuleFunction ((const xmlChar *) "day-in-week",
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
exsltDateMinuteInHourFunction);
|
exsltDateDayInWeekFunction);
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "second-in-minute",
|
xsltRegisterExtModuleFunction ((const xmlChar *) "day-in-year",
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
exsltDateSecondInMinuteFunction);
|
exsltDateDayInYearFunction);
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "seconds",
|
xsltRegisterExtModuleFunction ((const xmlChar *) "day-name",
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
exsltDateSecondsFunction);
|
exsltDateDayNameFunction);
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "add",
|
xsltRegisterExtModuleFunction ((const xmlChar *) "day-of-week-in-month",
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
exsltDateAddFunction);
|
exsltDateDayOfWeekInMonthFunction);
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "add-duration",
|
xsltRegisterExtModuleFunction ((const xmlChar *) "difference",
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
|
||||||
exsltDateAddDurationFunction);
|
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "difference",
|
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
exsltDateDifferenceFunction);
|
exsltDateDifferenceFunction);
|
||||||
xsltRegisterExtModuleFunction((const xmlChar *) "duration",
|
xsltRegisterExtModuleFunction ((const xmlChar *) "duration",
|
||||||
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
exsltDateDurationFunction);
|
exsltDateDurationFunction);
|
||||||
|
xsltRegisterExtModuleFunction ((const xmlChar *) "hour-in-day",
|
||||||
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
|
exsltDateHourInDayFunction);
|
||||||
|
xsltRegisterExtModuleFunction ((const xmlChar *) "leap-year",
|
||||||
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
|
exsltDateLeapYearFunction);
|
||||||
|
xsltRegisterExtModuleFunction ((const xmlChar *) "minute-in-hour",
|
||||||
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
|
exsltDateMinuteInHourFunction);
|
||||||
|
xsltRegisterExtModuleFunction ((const xmlChar *) "month-abbreviation",
|
||||||
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
|
exsltDateMonthAbbreviationFunction);
|
||||||
|
xsltRegisterExtModuleFunction ((const xmlChar *) "month-in-year",
|
||||||
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
|
exsltDateMonthInYearFunction);
|
||||||
|
xsltRegisterExtModuleFunction ((const xmlChar *) "month-name",
|
||||||
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
|
exsltDateMonthNameFunction);
|
||||||
|
xsltRegisterExtModuleFunction ((const xmlChar *) "second-in-minute",
|
||||||
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
|
exsltDateSecondInMinuteFunction);
|
||||||
|
xsltRegisterExtModuleFunction ((const xmlChar *) "seconds",
|
||||||
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
|
exsltDateSecondsFunction);
|
||||||
|
xsltRegisterExtModuleFunction ((const xmlChar *) "sum",
|
||||||
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
|
exsltDateSumFunction);
|
||||||
|
xsltRegisterExtModuleFunction ((const xmlChar *) "time",
|
||||||
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
|
exsltDateTimeFunction);
|
||||||
|
xsltRegisterExtModuleFunction ((const xmlChar *) "week-in-month",
|
||||||
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
|
exsltDateWeekInMonthFunction);
|
||||||
|
xsltRegisterExtModuleFunction ((const xmlChar *) "week-in-year",
|
||||||
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
|
exsltDateWeekInYearFunction);
|
||||||
|
xsltRegisterExtModuleFunction ((const xmlChar *) "year",
|
||||||
|
(const xmlChar *) EXSLT_DATE_NAMESPACE,
|
||||||
|
exsltDateYearFunction);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user