Hi!

It seems that libxslt allows for an xsl:template to be created without name or 
match attribute.  This isn’t allowed by the standard and sometimes my 
colleagues forget and then wonder why things don’t work :-).

A simple check in xsltAddTemplate would suffice, for example,

diff --git a/libxslt/pattern.c b/libxslt/pattern.c
index 32de1b48..597b6b44 100644
--- a/libxslt/pattern.c
+++ b/libxslt/pattern.c
@@ -2131,8 +2131,15 @@ xsltAddTemplate(xsltStylesheetPtr style, xsltTemplatePtr 
cur,
         xmlHashAddEntry2(style->namedTemplates, cur->name, cur->nameURI, cur);
     }
 
-    if (cur->match == NULL)
+    if (cur->match == NULL) {
+            if (cur->name == NULL) {
+                xsltTransformError(NULL, style, cur->elem,
+                    "xsl:template: need to specify match or name attribute\n");
+                style->errors++;
+                return(-1);
+            }
        return(0);
+    }
 
     priority = cur->priority;
     pat = xsltCompilePatternInternal(cur->match, style->doc, cur->elem,

but I couldn’t quite figure out the structure of the tests directory, so I 
didn’t write a test for this.  Any help in this area would be appreciated.

  Nikolai
_______________________________________________
xslt mailing list, project page http://xmlsoft.org/XSLT/
xslt@gnome.org
https://mail.gnome.org/mailman/listinfo/xslt

Reply via email to