summaryrefslogtreecommitdiff
path: root/gnu/xml/stream/XMLParser.java
diff options
context:
space:
mode:
authorChris Burdess <dog@bluezoo.org>2006-01-12 16:35:51 +0000
committerChris Burdess <dog@bluezoo.org>2006-01-12 16:35:51 +0000
commit27affa71c21beb8d5c7c9e981bf5fce0576c08f5 (patch)
tree0aa3d799f88964ac3fe3f6f53663ae16fc33cde9 /gnu/xml/stream/XMLParser.java
parent7b8e31bd1ed72a57e58388dfcd59ce3ae85d4c99 (diff)
downloadclasspath-27affa71c21beb8d5c7c9e981bf5fce0576c08f5.tar.gz
2006-01-12 Chris Burdess <dog@gnu.org>
* gnu/xml/dom/DomDocument.java, gnu/xml/dom/DomElement.java, gnu/xml/dom/DomNode.java, gnu/xml/stream/XMLParser.java, gnu/xml/transform/Bindings.java, gnu/xml/transform/ElementAvailableFunction.java, gnu/xml/transform/ElementNode.java, gnu/xml/transform/FunctionAvailableFunction.java, gnu/xml/transform/NamespaceProxy.java, gnu/xml/transform/StreamSerializer.java, gnu/xml/transform/Stylesheet.java, gnu/xml/transform/TransformerImpl.java, gnu/xml/xpath/Selector.java: Implement isEqualNode correctly for document and element nodes; correct coalescing semantics when parsing; attribute-sets can only refer to top-level variables and parameters; fix namespace retrieval during element-available and function-available functions; implement xsl:fallback for extension elements; tokenize whitespace correctly during whitespace stripping; correct following and previous node axes selectors.
Diffstat (limited to 'gnu/xml/stream/XMLParser.java')
-rw-r--r--gnu/xml/stream/XMLParser.java22
1 files changed, 13 insertions, 9 deletions
diff --git a/gnu/xml/stream/XMLParser.java b/gnu/xml/stream/XMLParser.java
index f856f9372..4240d8590 100644
--- a/gnu/xml/stream/XMLParser.java
+++ b/gnu/xml/stream/XMLParser.java
@@ -282,8 +282,8 @@ public class XMLParser
private final boolean stringInterning;
/**
- * If true, adjacent text will always be reported as one event.
- * Otherwise multiple text events (chunks) may be reported.
+ * If true, CDATA sections will be merged with adjacent text nodes into a
+ * single event.
*/
private final boolean coalescing;
@@ -366,8 +366,8 @@ public class XMLParser
* (necessary if there are external entities to be resolved)
* @param validating if the parser is to be a validating parser
* @param namespaceAware if the parser should support XML Namespaces
- * @param coalescing if text should be reported as a single event instead
- * of a series of events
+ * @param coalescing if CDATA sections should be merged into adjacent text
+ * nodes
* @param replaceERefs if entity references should be automatically
* replaced by their replacement text (otherwise they will be reported as
* entity-reference events)
@@ -423,8 +423,8 @@ public class XMLParser
* (necessary if there are external entities to be resolved)
* @param validating if the parser is to be a validating parser
* @param namespaceAware if the parser should support XML Namespaces
- * @param coalescing if text should be reported as a single event instead
- * of a series of events
+ * @param coalescing if CDATA sections should be merged into adjacent text
+ * nodes
* @param replaceERefs if entity references should be automatically
* replaced by their replacement text (otherwise they will be reported as
* entity-reference events)
@@ -3088,8 +3088,12 @@ public class XMLParser
case 0x3c: // '<'
reset();
read(tmpBuf, 0, i);
- done = true;
- break; // end of text sequence
+ i = len;
+ if (coalescing && tryRead(TEST_CDATA))
+ readUntil(TEST_END_CDATA); // read CDATA section into buf
+ else
+ done = true; // end of text sequence
+ break;
default:
if (input.xml11)
{
@@ -3106,7 +3110,7 @@ public class XMLParser
}
// if text buffer >= 2MB, return it as a chunk
// to avoid excessive memory use
- if (!coalescing && buf.length() >= 2097152)
+ if (buf.length() >= 2097152)
done = true;
}
if (entities)