diff --git a/ChangeLog b/ChangeLog index 6eb3d4a50a8adfa48e9280fb544cfed05d7a7e73_Q2hhbmdlTG9n..4e2dc471cf848eee004a551f595d5b767b1ff09f_Q2hhbmdlTG9n 100644 --- 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 index 0000000000000000000000000000000000000000..4e2dc471cf848eee004a551f595d5b767b1ff09f_RkVBVFVSRVM= --- /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 6eb3d4a50a8adfa48e9280fb544cfed05d7a7e73_VE9ETw==..4e2dc471cf848eee004a551f595d5b767b1ff09f_VE9ETw== 100644 --- a/TODO +++ b/TODO @@ -15,6 +15,15 @@ -> 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. diff --git a/libxslt/xslt.c b/libxslt/xslt.c index 6eb3d4a50a8adfa48e9280fb544cfed05d7a7e73_bGlieHNsdC94c2x0LmM=..4e2dc471cf848eee004a551f595d5b767b1ff09f_bGlieHNsdC94c2x0LmM= 100644 --- a/libxslt/xslt.c +++ b/libxslt/xslt.c @@ -564,6 +564,7 @@ } /* - * Find and handle the params + * Skip the first params + */ cur = template->children; while (cur != NULL) { @@ -568,4 +569,4 @@ cur = template->children; while (cur != NULL) { - / * + /* * Remove Blank nodes found at this level. @@ -571,5 +572,5 @@ * Remove Blank nodes found at this level. - * / + */ if (IS_BLANK_NODE(cur)) { xmlNodePtr blank = cur; @@ -578,9 +579,7 @@ 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; } @@ -584,7 +583,6 @@ break; cur = cur->next; } - */ /* * Browse the remaining of the template @@ -782,5 +780,5 @@ } 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")) { @@ -786,5 +784,5 @@ } else if (IS_XSLT_NAME(cur, "param")) { - TODO /* Handle param */ + xsltParseGlobalParam(style, cur); } else if (IS_XSLT_NAME(cur, "template")) { #ifdef DEBUG_PARSING templates++;