add missing variable fixed some error callback data added new date:sum
authorDaniel Veillard <veillard@src.gnome.org>
Fri, 24 Sep 2004 16:16:52 +0000 (16:16 +0000)
committerDaniel Veillard <veillard@src.gnome.org>
Fri, 24 Sep 2004 16:16:52 +0000 (16:16 +0000)
* Makefile.am: add missing variable
* libxslt/transform.c: fixed some error callback data
* tests/exslt/date/Makefile.am tests/exslt/date/sum*: added new
  date:sum testing from Derek Poon
Daniel

12 files changed:
ChangeLog
Makefile.am
NEWS
libxslt/transform.c
tests/exslt/date/Makefile.am
tests/exslt/date/sum.1.out [new file with mode: 0644]
tests/exslt/date/sum.1.xml [new file with mode: 0644]
tests/exslt/date/sum.1.xsl [new file with mode: 0644]
tests/exslt/date/sum.2.err [new file with mode: 0644]
tests/exslt/date/sum.2.out [new file with mode: 0644]
tests/exslt/date/sum.2.xml [new file with mode: 0644]
tests/exslt/date/sum.2.xsl [new file with mode: 0644]

index abb28ca..969ecd6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Fri Sep 24 18:13:45 CEST 2004 Daniel Veillard <daniel@veillard.com>
+
+       * Makefile.am: add missing variable
+       * libxslt/transform.c: fixed some error callback data
+       * tests/exslt/date/Makefile.am tests/exslt/date/sum*: added new
+         date:sum testing from Derek Poon
+
 Fri Sep 24 09:17:22 PDT 2004 William Brack <wbrack@mmm.com.hk>
 
        * libexslt/date.c: fixed problem with empty sets, etc.
index 68f9f9c..a599990 100644 (file)
@@ -16,6 +16,8 @@ bin_SCRIPTS = xslt-config
 dist-hook: cleanup libxslt.spec
        (cd $(srcdir) ; tar -cf - --exclude CVS win32 vms examples) | (cd $(distdir); tar xf -)
 
+CVS_EXTRA_DIST =
+
 EXTRA_DIST = xsltConf.sh.in xslt-config.in libxslt.spec libxslt.spec.in \
              FEATURES TODO Copyright libxslt.m4 \
             win32/libxslt/libxslt.def win32/libxslt/libxslt.dsw \
diff --git a/NEWS b/NEWS
index 3c15600..ba04b6e 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -10,9 +10,16 @@ ChangeLog.html
 to the CVS at 
 http://cvs.gnome.org/viewcvs/libxslt/
  code base.Those are the public releases made:
+1.1.10: Aug 31 2004:
+   - build fix: NUL in c file blocking compilation on Solaris, Windows build
+    (Igor Zlatkovic)
+   - fix: key initialization problem (William Brack)
+   - documentation: fixed missing man page description for --path
+
+
 1.1.9: Aug 22 2004:
    - build fixes: missing tests (William Brack), Python dependancies, Python
-    on 64bits boxes, --with-crypto flag (Rob Richards), 
+    on 64bits boxes, --with-crypto flag (Rob Richards),
    - fixes: RVT key handling (William), Python binding (William and Sitsofe
     Wheeler), key and XPath troubles (William), template priority on imports
     (William), str:tokenize with empty strings (William), #default namespace
index 3bf48ac..4515bb8 100644 (file)
@@ -1566,7 +1566,7 @@ xsltApplyOneTemplate(xsltTransformContextPtr ctxt, xmlNodePtr node,
                      */
                     ctxt->insert = insert;
                     if (!xsltApplyFallbacks(ctxt, node, cur)) {
-                        xsltGenericError(xsltGenericDebugContext,
+                        xsltGenericError(xsltGenericErrorContext,
                                          "xsltApplyOneTemplate: %s was not compiled\n",
                                          cur->name);
                     }
@@ -1601,7 +1601,7 @@ xsltApplyOneTemplate(xsltTransformContextPtr ctxt, xmlNodePtr node,
             } else if (IS_XSLT_NAME(cur, "message")) {
                 xsltMessage(ctxt, node, cur);
             } else {
-                xsltGenericError(xsltGenericDebugContext,
+                xsltGenericError(xsltGenericErrorContext,
                                  "xsltApplyOneTemplate: problem with xsl:%s\n",
                                  cur->name);
             }
@@ -3083,11 +3083,11 @@ xsltCallTemplate(xsltTransformContextPtr ctxt, xmlNodePtr node,
                    params = param;
                }
            } else {
-               xsltGenericError(xsltGenericDebugContext,
+               xsltGenericError(xsltGenericErrorContext,
                     "xsl:call-template: misplaced xsl:%s\n", cur->name);
            }
        } else {
-           xsltGenericError(xsltGenericDebugContext,
+           xsltGenericError(xsltGenericErrorContext,
                 "xsl:call-template: misplaced %s element\n", cur->name);
        }
        cur = cur->next;
@@ -3329,17 +3329,17 @@ xsltApplyTemplates(xsltTransformContextPtr ctxt, xmlNodePtr node,
                }
            } else if (IS_XSLT_NAME(cur, "sort")) {
                if (nbsorts >= XSLT_MAX_SORT) {
-                   xsltGenericError(xsltGenericDebugContext,
+                   xsltGenericError(xsltGenericErrorContext,
                        "xsl:apply-template: %s too many sort\n", node->name);
                } else {
                    sorts[nbsorts++] = cur;
                }
            } else {
-               xsltGenericError(xsltGenericDebugContext,
+               xsltGenericError(xsltGenericErrorContext,
                    "xsl:apply-template: misplaced xsl:%s\n", cur->name);
            }
         } else {
-            xsltGenericError(xsltGenericDebugContext,
+            xsltGenericError(xsltGenericErrorContext,
                  "xsl:apply-template: misplaced %s element\n", cur->name);
         }
         cur = cur->next;
@@ -3703,7 +3703,7 @@ xsltForEach(xsltTransformContextPtr ctxt, xmlNodePtr node,
     replacement = inst->children;
     while (IS_XSLT_ELEM(replacement) && (IS_XSLT_NAME(replacement, "sort"))) {
        if (nbsorts >= XSLT_MAX_SORT) {
-           xsltGenericError(xsltGenericDebugContext,
+           xsltGenericError(xsltGenericErrorContext,
                "xsl:for-each: too many sorts\n");
        } else {
            sorts[nbsorts++] = replacement;
index e208064..52e2308 100644 (file)
@@ -25,6 +25,8 @@ EXTRA_DIST =                                          \
        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 \
+       sum.1.out       sum.1.xml       sum.1.xsl       \
+       sum.2.out       sum.2.xml       sum.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  \
diff --git a/tests/exslt/date/sum.1.out b/tests/exslt/date/sum.1.out
new file mode 100644 (file)
index 0000000..2397866
--- /dev/null
@@ -0,0 +1,21 @@
+
+sum    : PT1M + PT2M
+result : PT3M
+sum    : P1DT2H + PT3M + PT4S
+result : P1DT2H3M4S
+sum    : PT20M + PT20M + PT20M
+result : PT1H
+sum    : PT01S + PT02S + PT04S + PT8S + PT16S + PT32S
+result : PT1M3S
+sum    : P1M
+result : P1M
+sum    : PT70M
+result : PT1H10M
+sum    : PT70M + P13M
+result : P1Y1MT1H10M
+sum    : PT70M + -PT30M
+result : PT40M
+sum    : PT1H10M + -PT30M + -PT30S
+result : PT39M30S
+sum    : PT1M + -PT1M
+result : P0D
\ No newline at end of file
diff --git a/tests/exslt/date/sum.1.xml b/tests/exslt/date/sum.1.xml
new file mode 100644 (file)
index 0000000..1004a7d
--- /dev/null
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page>
+  <!-- valid date/times -->
+  <sum>
+    <date dur='PT1M'/>
+    <date dur='PT2M'/>
+  </sum>
+
+  <sum>
+    <date dur='P1DT2H'/>
+    <date dur='PT3M'/>
+    <date dur='PT4S'/>
+  </sum>
+
+  <sum>
+    <date dur='PT20M'/>
+    <date dur='PT20M'/>
+    <date dur='PT20M'/>
+  </sum>
+
+  <sum>
+    <date dur='PT01S'/>
+    <date dur='PT02S'/>
+    <date dur='PT04S'/>
+    <date dur='PT8S'/>
+    <date dur='PT16S'/>
+    <date dur='PT32S'/>
+  </sum>
+
+  <!-- Base case: sum of 1 node -->
+  <sum>
+    <date dur='P1M'/>
+  </sum>
+
+  <!-- Non-normalized input -->
+  <sum>
+    <date dur='PT70M'/>
+  </sum>
+
+  <sum>
+    <date dur='PT70M'/>
+    <date dur='P13M'/>
+  </sum>
+
+  <!-- Negative durations -->
+  <sum>
+    <date dur='PT70M'/>
+    <date dur='-PT30M'/>
+  </sum>
+
+  <sum>
+    <date dur='PT1H10M'/>
+    <date dur='-PT30M'/>
+    <date dur='-PT30S'/>
+  </sum>
+
+  <!-- Zero sum -->
+  <sum>
+    <date dur='PT1M'/>
+    <date dur='-PT1M'/>
+  </sum>
+
+</page>
diff --git a/tests/exslt/date/sum.1.xsl b/tests/exslt/date/sum.1.xsl
new file mode 100644 (file)
index 0000000..642fafe
--- /dev/null
@@ -0,0 +1,20 @@
+<?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="sum">
+sum    : <xsl:apply-templates select="date"/>
+result : <xsl:value-of select="date:sum(date/@dur)"/>
+</xsl:template>
+
+<xsl:template match="date">
+  <xsl:if test="position() != 1"> + </xsl:if>
+  <xsl:value-of select="@dur"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/tests/exslt/date/sum.2.err b/tests/exslt/date/sum.2.err
new file mode 100644 (file)
index 0000000..0f63baf
--- /dev/null
@@ -0,0 +1,22 @@
+xmlXPathCompiledEval: evaluation failed
+runtime error: file ./sum.2.xsl line 12 element value-of
+xsltValueOf: text copy failed
+xmlXPathCompiledEval: evaluation failed
+runtime error: file ./sum.2.xsl line 12 element value-of
+xsltValueOf: text copy failed
+xmlXPathCompiledEval: evaluation failed
+runtime error: file ./sum.2.xsl line 12 element value-of
+xsltValueOf: text copy failed
+xmlXPathCompiledEval: evaluation failed
+runtime error: file ./sum.2.xsl line 12 element value-of
+xsltValueOf: text copy failed
+xmlXPathCompiledEval: evaluation failed
+runtime error: file ./sum.2.xsl line 12 element value-of
+xsltValueOf: text copy failed
+xmlXPathCompiledEval: evaluation failed
+runtime error: file ./sum.2.xsl line 12 element value-of
+xsltValueOf: text copy failed
+xmlXPathCompiledEval: evaluation failed
+runtime error: file ./sum.2.xsl line 12 element value-of
+xsltValueOf: text copy failed
+no result for ./sum.2.xml
diff --git a/tests/exslt/date/sum.2.out b/tests/exslt/date/sum.2.out
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tests/exslt/date/sum.2.xml b/tests/exslt/date/sum.2.xml
new file mode 100644 (file)
index 0000000..f5f77fe
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page>
+  <!-- sum of empty node-set -->
+  <sum/>
+
+  <!-- According to http://exslt.org/date/functions/add-duration/
+       add-duration should fail when a sum involving negative durations
+       involve borrowing -->
+  <sum>
+    <date dur='P1M'/>
+    <date dur='-P1D'/>
+  </sum>
+
+  <sum>
+    <date dur='P1M'/>
+    <date dur='-P1D'/>
+    <date dur='P1D'/>
+  </sum>
+
+  <!-- ... but switching the order should make it work -->
+  <sum>
+    <date dur='P1M'/>
+    <date dur='P1D'/>
+    <date dur='-P1D'/>
+  </sum>
+
+  <!-- Empty durations -->
+  <sum>
+    <date dur=''/>
+  </sum>
+
+  <sum>
+    <date dur=''/>
+    <date dur='P45S'/>
+  </sum>
+
+  <!-- Invalid durations -->
+  <sum>
+    <date dur='2004-09-20'/>
+  </sum>
+
+  <sum>
+    <date dur='1H'/>
+  </sum>
+
+  <sum>
+    <date dur='2004-09-22'/>
+    <date dur='P1D'/>
+  </sum>
+
+  <sum>
+    <date dur='P2D'/>
+    <date dur='--P1D'/>
+  </sum>
+</page>
diff --git a/tests/exslt/date/sum.2.xsl b/tests/exslt/date/sum.2.xsl
new file mode 100644 (file)
index 0000000..642fafe
--- /dev/null
@@ -0,0 +1,20 @@
+<?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="sum">
+sum    : <xsl:apply-templates select="date"/>
+result : <xsl:value-of select="date:sum(date/@dur)"/>
+</xsl:template>
+
+<xsl:template match="date">
+  <xsl:if test="position() != 1"> + </xsl:if>
+  <xsl:value-of select="@dur"/>
+</xsl:template>
+
+</xsl:stylesheet>