# HG changeset patch
# User Daniel Veillard <veillard@src.gnome.org>
# Date 979761898 0
#      Wed Jan 17 20:04:58 2001 +0000
# Node ID f5f01a9086ff7d30c31a284cc89f3c82a500ac0e
# Parent  034948f3afab893ea8d5a2017a2e87ef10f3a97b
- libxslt/transform.c libxslt/xslt.c: avoiding some problems
  with blank node stripping when not allowed.
Daniel

diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,9 @@
-Wed Jan 17 20:15:40 CET 2001
+Wed Jan 17 21:03:01 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
+
+	* libxslt/transform.c libxslt/xslt.c: avoiding some problems
+	  with blank node stripping when not allowed.
+
+Wed Jan 17 20:15:40 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
 
 	* libxslt/transform.c: modified apply-templates processing
 	  added select and sort support support.
diff --git a/libxslt/transform.c b/libxslt/transform.c
--- a/libxslt/transform.c
+++ b/libxslt/transform.c
@@ -793,18 +793,6 @@
 	    return;
 	}
 
-	/*
-	 * Cleanup of ignorable blank node detected
-	 */
-	if (delete != NULL) {
-#ifdef DEBUG_PROCESS
-	    xsltGenericDebug(xsltGenericDebugContext,
-		 "xsltApplyOneTemplate: removing ignorable blank node\n");
-#endif
-	    xmlUnlinkNode(delete);
-	    xmlFreeNode(delete);
-	    delete = NULL;
-	}
 	if (IS_XSLT_ELEM(cur)) {
 	    if (IS_XSLT_NAME(cur, "apply-templates")) {
 		ctxt->insert = insert;
@@ -844,20 +832,16 @@
 	     * For stylesheets, the set of whitespace-preserving
 	     * element names consists of just xsl:text.
 	     */
-	    if (!(IS_BLANK_NODE(cur))) {
 #ifdef DEBUG_PROCESS
-		xsltGenericDebug(xsltGenericDebugContext,
-		     "xsltApplyOneTemplate: copy text %s\n", cur->content);
+	    xsltGenericDebug(xsltGenericDebugContext,
+		 "xsltApplyOneTemplate: copy text %s\n", cur->content);
 #endif
-		copy = xmlCopyNode(cur, 0);
-		if (copy != NULL) {
-		    xmlAddChild(insert, copy);
-		} else {
-		    xsltGenericError(xsltGenericErrorContext,
-			    "xsltApplyOneTemplate: text copy failed\n");
-		}
+	    copy = xmlCopyNode(cur, 0);
+	    if (copy != NULL) {
+		xmlAddChild(insert, copy);
 	    } else {
-		delete = cur;
+		xsltGenericError(xsltGenericErrorContext,
+			"xsltApplyOneTemplate: text copy failed\n");
 	    }
 	} else if (cur->type == XML_ELEMENT_NODE) {
 #ifdef DEBUG_PROCESS
diff --git a/libxslt/xslt.c b/libxslt/xslt.c
--- a/libxslt/xslt.c
+++ b/libxslt/xslt.c
@@ -491,7 +491,9 @@
 	    }
 	} else if (cur->type == XML_TEXT_NODE) {
 	    if (IS_BLANK_NODE(cur)) {
-		delete = cur;
+		if (xmlNodeGetSpacePreserve(cur) != 1) {
+		    delete = cur;
+		}
 	    }
 	} else if (cur->type != XML_ELEMENT_NODE) {
 	    delete = cur;