updated added with alist of what's in and what's not fixed top level Param
authorCET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
Mon, 22 Jan 2001 14:31:59 +0000 (14:31 +0000)
committerDaniel Veillard <veillard@src.gnome.org>
Mon, 22 Jan 2001 14:31:59 +0000 (14:31 +0000)
Mon Jan 22 15:30:19 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* TODO: updated
* FEATURES: added with alist of what's in and what's not
* libxslt/xslt.c: fixed top level Param and Variable stuff

Mon Jan 22 11:46:44 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* xsltproc.c: removed bug
* tests/REC2/html.xml: added newline after doctype
* libxslt/variables.[ch] libxslt/xsltInternals.h: added param
  support, result tree fragment support (requires just commited
  extensions to libxml2 XPath !!!)
* transform.c: added call-template, with-param support
* libxslt/pattern.[ch]: xsltFindTemplate() needed for call-template
* TODO: updated, added a DONE section and started migrating stuff :-)

Sun Jan 21 12:03:16 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* Makefile.am tests/Makefile.am tests/REC1/Makefile.am
  tests/REC2/Makefile.am tests/REC2/html.xml: added tests target
  too, added the HTML output test
* libxmls/xsltutils.c: added HTML output
* libxslt/xslt.c: check version on literal result used as templates
* libxslt/transform.c: fixed an error in VERSION number
* libxslt/templates.c: make sure generated nodes have doc and
  parent properly set

Sat Jan 20 23:35:07 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* libxslt/Makefile.am libxslt/template.[ch]: added a template
  specific module. Added attribute value template, at least in
  one spot.
* tests/REC2/Makefile.am tests/REC2/svg.xml: the SVG test from
  the spec now works too.
* libxslt/variables.c: fixed the debug
* libxslt/xslt.c: fixed an ugly uninitialized variable
* libxslt/transform.c: now using attr template processing

Sat Jan 20 17:59:20 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* libxslt/transform.c libxslt/variables.[ch] libxslt/xslt.c
  libxslt/xsltInternals.h libxslt/xsltutils.h: changed a few
  structure to add an execution stack with variables. Tree
  valued variables still missing.
* TODO: updated

Fri Jan 19 13:16:57 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* libxslt/xslt.c: check version on stylesheets
* libxslt/xslt.c libxslt/xsltInternals.h libxslt/variables[.ch]:
  started adding variables interfaces and modules.

Thu Jan 18 16:08:38 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* libxslt/xslt.c: added support for disable-output-escaping
  will need libxml version > 20211
* libxslt/transform.c: cleanup
* libxslt/xsltutils.[ch]: added output functions
* libxslt/xsltproc.c: reuse the output function
* tests/REC2/Makefile.am tests/REC2/vrml.xml: added VRML output
  test

Wed Jan 17 21:03:01 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* libxslt/transform.c libxslt/xslt.c: avoiding some problems
  with blank node stripping when not allowed.

Wed Jan 17 20:15:40 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* libxslt/transform.c: modified apply-templates processing
  added select and sort support support.

Wed Jan 17 17:45:20 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* TODO: guess what, it's growing :-(
* configure.in: setup hacking values when compiling in my
  own environment.
* libxslt/transform.c libxslt/xsltutils.[hc]: added a first
  very rudimentary version of xsl:sort

Wed Jan 17 14:25:25 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* TODO: more stuff
* libxslt/transform.c: context position and size in for-each
* libxslt/xsltutils[ch] libxslt/makefile.am: added the util module
  and put Error and Debug routines
* libxslt/xslt.c libxslt/transform.c libxslt/pattern.c: switched
  to use the Debug calls, cleanup
* libxslt/xsltproc.c: added -v to enable debug printing

Tue Jan 16 17:17:17 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* TODO: started filling it :-(
* libxslt/pattern.c: should now at least compile the full
  set of patterns authorized. Default priorities added.
* libxslt/transform.c: a bit more work and cleanup.

Mon Jan 15 15:34:17 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* TODO: started adding in there :-(

Mon Jan 15 15:31:41 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* transform.c, xslt.c, xsltproc.c: lots of fixes, added
  support of xslt:if and xslt:attribute, need libxml2 interfaces
  present only in CVS.

Sat Jan 13 23:26:21 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* test/Makefile.am test/REC*/Makefile.am: added first test
* libxslt/pattern.c libxslt/transform.c libxslt/xslt.c:
  cleanup of nodes at reading of stylesheet, added support
  for xsl:for-each and fixed a few recursion bugs

Fri Jan 12 22:33:07 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* pattern.c, xslt.c: removed debug
* transform.c: added value-of, seems to handle the first
  REC example correctly

Fri Jan 12 18:34:01 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* transform.c, xsltproc.c: small fight with spaces and formatting
  may need a revisit later but looks pretty good right now.

Fri Jan 12 13:43:30 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* transform.c: basic processing in place
* xsltInternals.h: exported one xslt.c function

Thu Jan 11 21:10:59 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* libxslt/transform.[ch] Makefile.am: started adding the
  transformation module
* pattern.[ch] xslt.c: more work...

Thu Jan 11 14:02:03 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* libxslt/pattern.c: started adding xsltTestCompMatch()

Wed Jan 10 20:44:30 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* libxslt/pattern.c: more work on parsing selectors

Wed Jan 10 16:29:41 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* libxslt/xslt*: completeted the structures
* libxslt/pattern.[ch]: started adding code to precompile patterns
  and do the lookup
* libxslt/makefile.am: added the new files

Mon Jan  8 19:55:18 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* libxslt/xslt.c : small cleanup
* configure.in libxslt/xsltconfig.h.in: add memory debug and
  mechanism for compile-time options

Sun Jan  7 22:53:12 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* libxslt/xslt.[ch]: started parsing templates

Sun Jan  7 19:50:02 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* libxslt/xslt.[ch]: started parsing stylesheet xsl:stylesheet

Sun Jan  7 16:11:42 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* libxslt/xslt.[ch] libxslt/xsltInternals.h libxslt/xsltproc.c:
  very early coding

Sun Jan  7 15:10:54 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* configure.in Makefile.am AUTHORS NEWS autogen.sh config.h.in
  libxslt/Makefile.am tests/Makefile.am:
  Created the library framework, imported it into the GNOME CVS base
* INSTALL: added a small instruction file.

Sun Jan  7 13:51:30 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* libxslt/xslt.[ch] libxslt/xsltInternals.h libxslt/xsltproc.c:
  first steps toward building the framework

Sun Jan  7 12:22:13 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* NOTES: added notes taken while reading the spec.

Fri Jan  5 11:34:12 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* test/REC1 test/REC2: added examples from the XSLT REC

Fri Jan  5 11:14:29 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

* README: basic informations
* Changelog: created

ChangeLog
FEATURES [new file with mode: 0644]
TODO
libxslt/xslt.c

index 8f4f9d5..cc03ece 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Mon Jan 22 15:30:19 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
+
+       * TODO: updated
+       * FEATURES: added with alist of what's in and what's not
+       * libxslt/xslt.c: fixed top level Param and Variable stuff
+
 Mon Jan 22 11:46:44 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
 
        * xsltproc.c: removed bug
diff --git a/FEATURES b/FEATURES
new file mode 100644 (file)
index 0000000..889e575
--- /dev/null
+++ b/FEATURES
@@ -0,0 +1,211 @@
+
+Stylesheet Constructs:
+======================
+
+YES                xsl:stylesheet
+?                      id = id 
+NO                     extension-element-prefixes = tokens 
+NO                     exclude-result-prefixes = tokens 
+YES                    version = number
+
+YES                xsl:transform
+?                      id = id 
+NO                     extension-element-prefixes = tokens 
+NO                     exclude-result-prefixes = tokens 
+YES                    version = number
+
+
+YES                Literal Result Element as Stylesheet
+
+NO                 Embedding Stylesheets
+
+
+Top Level Elements:
+===================
+
+NO                 xsl:include
+NO                     href = uri-reference
+
+NO                 xsl:import
+NO                     href = uri-reference
+
+YES                xsl:strip-space
+YES                    elements = tokens
+
+YES                xsl:preserve-space
+YES                    elements = tokens
+
+YES                xsl:template
+YES                    match = pattern 
+YES                    name = qname 
+YES                    priority = number 
+NO                     mode = qname
+
+NO                 xsl:namespace-alias
+NO                     stylesheet-prefix = prefix | "#default"
+NO                     result-prefix = prefix | "#default"
+
+NO                 xsl:attribute-set
+NO                     name = qname 
+NO                     use-attribute-sets = qnames
+
+YES                xsl:variable
+YES                    name = qname 
+YES                    select = expression
+YES                    Content: template
+
+YES                xsl:param
+YES                    name = qname 
+YES                    select = expression
+YES                    Content: template
+
+NO                 xsl:key
+NO                     name = qname 
+NO                     match = pattern 
+NO                     use = expression
+
+YES                xsl:output
+YES                    method = "xml" | "html" | "text" | qname-but-not-ncname 
+YES                    version = nmtoken 
+YES                    encoding = string 
+YES                    omit-xml-declaration = "yes" | "no"
+YES                    standalone = "yes" | "no"
+YES                    doctype-public = string 
+YES                    doctype-system = string 
+NO                     cdata-section-elements = qnames 
+YES                    indent = "yes" | "no"
+YES                    media-type = string
+
+Instructions:
+=============
+
+YES                xsl:apply-templates
+YES                    select = node-set-expression 
+NO                     mode = qname
+
+NO                 xsl:apply-imports
+
+YES                xsl:call-template
+YES                    name = qname
+
+NO                 xsl:element
+NO                     name = { qname }
+NO                     namespace = { uri-reference }
+NO                     use-attribute-sets = qnames
+
+YES                xsl:attribute
+YES                    name = { qname }
+YES                    namespace = { uri-reference }
+
+YES                xsl:text
+YES                    disable-output-escaping = "yes" | "no"
+
+                   xsl:processing-instruction
+                       name = { ncname }
+
+NO                 xsl:comment
+
+NO                 xsl:copy
+NO                     use-attribute-sets = qnames
+
+YES                xsl:value-of
+YES                    select = string-expression 
+NO                     disable-output-escaping = "yes" | "no"
+
+NO                 xsl:number
+NO                     level = "single" | "multiple" | "any"
+NO                     count = pattern 
+NO                     from = pattern 
+NO                     value = number-expression 
+NO                     format = { string }
+NO                     lang = { nmtoken }
+NO                     letter-value = { "alphabetic" | "traditional" }
+NO                     grouping-separator = { char }
+NO                     grouping-size = { number }
+
+YES                xsl:for-each
+YES                    select = node-set-expression
+
+YES                xsl:if
+YES                    test = boolean-expression
+
+NO                 xsl:choose
+
+NO                 xsl:when
+NO                     test = boolean-expression
+
+NO                 xsl:otherwise
+
+YES                xsl:sort
+YES                    select = string-expression 
+NO                     lang = { nmtoken }
+YES                    data-type = { "text" | "number" | qname-but-not-ncname }
+YES                    order = { "ascending" | "descending" }
+NO                     case-order = { "upper-first" | "lower-first" }
+
+YES                xsl:variable
+YES                    name = qname 
+YES                    select = expression
+YES                    Content: template
+
+YES                xsl:param
+YES                    name = qname 
+YES                    select = expression
+YES                    Content: template
+
+NO                 xsl:copy-of
+NO                     select = expression
+
+YES                xsl:with-param
+YES                    name = qname 
+YES                    select = expression
+
+NO                 xsl:decimal-format
+NO                     name = qname 
+NO                     decimal-separator = char 
+NO                     grouping-separator = char 
+NO                     infinity = string 
+NO                     minus-sign = char 
+NO                     NaN = string 
+NO                     percent = char 
+NO                     per-mille = char 
+NO                     zero-digit = char 
+NO                     digit = char 
+NO                     pattern-separator = char
+
+NO                 xsl:message
+NO                     terminate = "yes" | "no"
+
+NO                 xsl:fallback
+
+General:
+========
+
+YES (w.o import)    Conflict Resolution for Template Rules
+YES                Whitespace Stripping
+YES                Built-in Template Rules
+YES                    match="*|/"
+YES                    match="text()|@*"
+YES                    match="processing-instruction()|comment()"
+NO                     Namespace
+NO                     Mode
+
+YES                Attribute Value Templates
+
+YES                Result Tree Fragments
+
+Functions:
+==========
+
+NO                 node-set document(object, node-set?)
+NO                 node-set key(string, object)
+NO                 string format-number(number, string, string?)
+NO                 node-set current() 
+NO                 string unparsed-entity-uri(string)
+NO                 string generate-id(node-set?)
+NO                 object system-property(string)
+NO                 boolean element-available(string)
+NO                 boolean function-available(string)
+
+Daniel.Veillard@imag.fr
+$Id$
diff --git a/TODO b/TODO
index 57e8f36..45f38dd 100644 (file)
--- a/TODO
+++ b/TODO
@@ -15,6 +15,15 @@ Import:
   -> parse them
   -> provide functions to circulate in the import tree of stylesheets
 
+Extra functions:
+  -> make a separate module.
+  -> document() should not be a problem since Result Tree Fragments are
+     implemnted
+  -> others 
+
+ID and Key support:
+  -> Id should be simple, key will probably requires some hash tables.
+
 Pattern tester:
   -> try to optimize for ID scan and tests.
 
index 25b1b33..7f051ef 100644 (file)
@@ -564,12 +564,13 @@ skip_children:
     }
 
     /*
-     * Find and handle the params
+     * Skip the first params
+     */
     cur = template->children;
     while (cur != NULL) {
-       / *
+       /*
         * Remove Blank nodes found at this level.
-        * /
+        */
        if (IS_BLANK_NODE(cur)) {
            xmlNodePtr blank = cur;
 
@@ -578,13 +579,10 @@ skip_children:
            xmlFreeNode(blank);
            continue;
        }
-       if ((IS_XSLT_ELEM(cur)) && (IS_XSLT_NAME(cur, "param"))) {
-           xsltParseGlobalParam(style, cur);
-       } else
+       if ((IS_XSLT_ELEM(cur)) && (!(IS_XSLT_NAME(cur, "param"))))
            break;
        cur = cur->next;
     }
-     */
 
     /*
      * Browse the remaining of the template
@@ -782,9 +780,9 @@ xsltParseStylesheetTop(xsltStylesheetPtr style, xmlNodePtr top) {
         } else if (IS_XSLT_NAME(cur, "attribute-set")) {
            TODO /* Handle attribute-set */
         } else if (IS_XSLT_NAME(cur, "variable")) {
-           TODO /* Handle variable */
+           xsltParseGlobalVariable(style, cur);
         } else if (IS_XSLT_NAME(cur, "param")) {
-           TODO /* Handle param */
+           xsltParseGlobalParam(style, cur);
         } else if (IS_XSLT_NAME(cur, "template")) {
 #ifdef DEBUG_PARSING
            templates++;