* transform.c: enhanced previous fix to bug #120684, using
excellent suggestion by Daniel
* attributes.c: fixed bug #119583, merging attribute sets
from imported stylesheets.
* tests/docs/Makefile.am tests/docs/bug-131.xml
tests/general/Makefile.am tests/docs/bug-131*: added tests
to the regression suite for bug #120684.
const xmlChar *name, const xmlChar *ns,
ATTRIBUTE_UNUSED const xmlChar *ignored) {
int ret;
const xmlChar *name, const xmlChar *ns,
ATTRIBUTE_UNUSED const xmlChar *ignored) {
int ret;
+ xsltAttrElemPtr topSet;
ret = xmlHashAddEntry2(style->attributeSets, name, ns, values);
if (ret < 0) {
ret = xmlHashAddEntry2(style->attributeSets, name, ns, values);
if (ret < 0) {
*/
#ifdef WITH_XSLT_DEBUG_ATTRIBUTES
xsltGenericDebug(xsltGenericDebugContext,
*/
#ifdef WITH_XSLT_DEBUG_ATTRIBUTES
xsltGenericDebug(xsltGenericDebugContext,
- "attribute sets %s present already in top stylesheet\n",
- name);
+ "attribute set %s present already in top stylesheet"
+ " - merging\n", name);
- xsltFreeAttrElem(values);
+ topSet = xmlHashLookup2(style->attributeSets, name, ns);
+ if (topSet==NULL) {
+ xsltGenericError(xsltGenericErrorContext,
+ "xsl:attribute-set : logic error merging from imports for"
+ " attribute-set %s\n", name);
+ } else {
+ topSet = xsltMergeAttrElemList(topSet, values);
+ xmlHashUpdateEntry2(style->attributeSets, name, ns, topSet, NULL);
+ }
+ xsltFreeAttrElemList(values);
#ifdef WITH_XSLT_DEBUG_ATTRIBUTES
} else {
xsltGenericDebug(xsltGenericDebugContext,
#ifdef WITH_XSLT_DEBUG_ATTRIBUTES
} else {
xsltGenericDebug(xsltGenericDebugContext,
- "attribute sets %s moved to top stylesheet\n",
+ "attribute set %s moved to top stylesheet\n",