diff --git a/ChangeLog b/ChangeLog index 3288dfa9..a8a7df1c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Thu Jan 22 18:42:03 CET 2004 Daniel Veillard + + * libxslt/xslt.c: applied patch from Stefan Kost to fix + behaviour on unknown element from the XSLT namespace. + * python/generator.py: applied patch from Stephane bidoul + to export enums in the bindings. + Thu Jan 22 10:35:14 HKT 2004 William Brack * tests/general/Makefile.am, tests/general/bug-141.out, diff --git a/libxslt/xslt.c b/libxslt/xslt.c index 795d10dc..8e3fdf79 100644 --- a/libxslt/xslt.c +++ b/libxslt/xslt.c @@ -1871,10 +1871,19 @@ xsltParseStylesheetTop(xsltStylesheetPtr style, xmlNodePtr top) { } else if (IS_XSLT_NAME(cur, "namespace-alias")) { xsltNamespaceAlias(style, cur); } else { - xsltTransformError(NULL, style, cur, + if ((style != NULL) && (style->doc->version != NULL) && (!strncmp(style->doc->version,"1.0",3))) { + xsltTransformError(NULL, style, cur, + "xsltParseStylesheetTop: unknown %s element\n", + cur->name); + if (style != NULL) style->errors++; + } + else { + /* do Forwards-Compatible Processing */ + xsltTransformError(NULL, style, cur, "xsltParseStylesheetTop: ignoring unknown %s element\n", cur->name); - if (style != NULL) style->warnings++; + if (style != NULL) style->warnings++; + } } cur = cur->next; } diff --git a/python/generator.py b/python/generator.py index 454b3552..1327ce7f 100755 --- a/python/generator.py +++ b/python/generator.py @@ -4,6 +4,7 @@ # functions = {} +enums = {} # { enumType: { enumConstant: enumValue } } import string @@ -136,6 +137,9 @@ class docParser: self.function_return_info = attrs['info'] if attrs.has_key('field'): self.function_return_field = attrs['field'] + elif tag == 'enum': + enum(attrs['type'],attrs['name'],attrs['value']) + def end(self, tag): @@ -166,10 +170,13 @@ class docParser: def function(name, desc, ret, args, file): - global functions - functions[name] = (desc, ret, args, file) +def enum(type, name, value): + if not enums.has_key(type): + enums[type] = {} + enums[type][name] = value + ####################################################################### # # Some filtering rukes to drop functions/types which should not @@ -943,6 +950,17 @@ def buildWrappers(): classes.write(" return ret\n"); classes.write("\n"); + # + # Generate enum constants + # + for type,enum in enums.items(): + classes.write("# %s\n" % type) + items = enum.items() + items.sort(lambda i1,i2: cmp(long(i1[1]),long(i2[1]))) + for name,value in items: + classes.write("%s = %s\n" % (name,value)) + classes.write("\n"); + txt.close() classes.close()