Fix an idness generation problem
authorDaniel Veillard <veillard@redhat.com>
Thu, 24 Sep 2009 12:04:17 +0000 (14:04 +0200)
committerDaniel Veillard <veillard@redhat.com>
Thu, 24 Sep 2009 12:04:17 +0000 (14:04 +0200)
* libxslt/templates.c: when copying attributes coming from the
  stylesheet IDness was not asserted, though with xml:id this is now
  possible.

libxslt/templates.c

index 8d26a8a..c6250dc 100644 (file)
@@ -637,7 +637,7 @@ xsltAttrListTemplateProcess(xsltTransformContextPtr ctxt,
            last = last->next;
     } else {
        last = NULL;
-    }    
+    }
     attr = attrs;
     do {
        /*
@@ -719,20 +719,20 @@ xsltAttrListTemplateProcess(xsltTransformContextPtr ctxt,
                copyNs = NULL;
        }
        copy->ns = copyNs;
-       
+
        /*
        * Set the value.
-       */          
+       */
        text = xmlNewText(NULL);
        if (text != NULL) {
            copy->last = copy->children = text;
            text->parent = (xmlNodePtr) copy;
            text->doc = copy->doc;
-           
+
            if (attr->psvi != NULL) {
                /*
                * Evaluate the Attribute Value Template.
-               */              
+               */
                valueAVT = xsltEvalAVT(ctxt, attr->psvi, attr->parent);
                if (valueAVT == NULL) {
                    /*
@@ -743,7 +743,7 @@ xsltAttrListTemplateProcess(xsltTransformContextPtr ctxt,
                        xsltTransformError(ctxt, NULL, attr->parent,
                            "Internal error: Failed to evaluate the AVT "
                            "of attribute '{%s}%s'.\n",
-                           attr->ns->href, attr->name);                            
+                           attr->ns->href, attr->name);
                    } else {
                        xsltTransformError(ctxt, NULL, attr->parent,
                            "Internal error: Failed to evaluate the AVT "
@@ -763,6 +763,9 @@ xsltAttrListTemplateProcess(xsltTransformContextPtr ctxt,
            } else {
                text->content = xmlStrdup(value);
            }
+            if ((copy != NULL) && (text != NULL) &&
+                (xmlIsID(copy->doc, copy->parent, copy)))
+                xmlAddID(NULL, copy->doc, text->content, copy);
        }
 
 next_attribute: