mirror of
https://gitlab.gnome.org/GNOME/libxslt
synced 2025-07-31 02:43:06 +03:00
Allow {URI}NCName syntax for user parameters
Thanks to Richard Smith <richard@ex-parrot.com> for the patch. Applied with minor changes. Fixes bug #764195. https://bugzilla.gnome.org/show_bug.cgi?id=764195
This commit is contained in:
@ -1445,9 +1445,22 @@ xsltProcessUserParamInternal(xsltTransformContextPtr ctxt,
|
||||
/*
|
||||
* Name lookup
|
||||
*/
|
||||
|
||||
name = xsltSplitQName(ctxt->dict, name, &prefix);
|
||||
href = NULL;
|
||||
|
||||
if (name[0] == '{') {
|
||||
int len = 0;
|
||||
|
||||
while ((name[len] != 0) && (name[len] != '}')) len++;
|
||||
if (name[len] == 0) {
|
||||
xsltTransformError(ctxt, style, NULL,
|
||||
"user param : malformed parameter name : %s\n", name);
|
||||
} else {
|
||||
href = xmlDictLookup(ctxt->dict, &name[1], len-1);
|
||||
name = xmlDictLookup(ctxt->dict, &name[len + 1], -1);
|
||||
}
|
||||
}
|
||||
else {
|
||||
name = xsltSplitQName(ctxt->dict, name, &prefix);
|
||||
if (prefix != NULL) {
|
||||
xmlNsPtr ns;
|
||||
|
||||
@ -1461,6 +1474,7 @@ xsltProcessUserParamInternal(xsltTransformContextPtr ctxt,
|
||||
href = ns->href;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (name == NULL)
|
||||
return (-1);
|
||||
|
@ -523,6 +523,7 @@ static void usage(const char *name) {
|
||||
#endif
|
||||
printf("\t--encoding: the input document character encoding\n");
|
||||
printf("\t--param name value : pass a (parameter,value) pair\n");
|
||||
printf("\t name is a QName or a string of the form {URI}NCName.\n");
|
||||
printf("\t value is an UTF8 XPath expression.\n");
|
||||
printf("\t string values must be quoted like \"'string'\"\n or");
|
||||
printf("\t use stringparam to avoid it\n");
|
||||
|
Reference in New Issue
Block a user