You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by mr...@apache.org on 2006/05/12 21:35:43 UTC
svn commit: r405847 - in /xerces/java/trunk/src/org/apache/xml/serialize:
BaseMarkupSerializer.java XML11Serializer.java XMLSerializer.java
Author: mrglavas
Date: Fri May 12 12:35:42 2006
New Revision: 405847
URL: http://svn.apache.org/viewcvs?rev=405847&view=rev
Log:
Fixing a bug. When printing surrogate character pairs within an attribute
or entity value we must ensure that content() isn't called. This method
assumes that the serializer is writing character content and will write
a '>' character to the stream if it believes the start tag hasn't been
closed. And it hasn't been closed yet if we're writing an attribute value.
Modified:
xerces/java/trunk/src/org/apache/xml/serialize/BaseMarkupSerializer.java
xerces/java/trunk/src/org/apache/xml/serialize/XML11Serializer.java
xerces/java/trunk/src/org/apache/xml/serialize/XMLSerializer.java
Modified: xerces/java/trunk/src/org/apache/xml/serialize/BaseMarkupSerializer.java
URL: http://svn.apache.org/viewcvs/xerces/java/trunk/src/org/apache/xml/serialize/BaseMarkupSerializer.java?rev=405847&r1=405846&r2=405847&view=diff
==============================================================================
--- xerces/java/trunk/src/org/apache/xml/serialize/BaseMarkupSerializer.java (original)
+++ xerces/java/trunk/src/org/apache/xml/serialize/BaseMarkupSerializer.java Fri May 12 12:35:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2002,2004,2005 The Apache Software Foundation.
+ * Copyright 1999-2002,2004-2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,7 +14,6 @@
* limitations under the License.
*/
-
// Sep 14, 2000:
// Fixed comments to preserve whitespaces and add a line break
// when indenting. Reported by Gervase Markham <ge...@gerv.net>
@@ -39,10 +38,8 @@
// entering element state.
// Reported by Lowell Vaughn <lv...@agillion.com>
-
package org.apache.xml.serialize;
-
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
@@ -508,7 +505,7 @@
if (!XMLChar.isValid(ch)) {
// check if it is surrogate
if (++index < end) {
- surrogates(ch, chars[index]);
+ surrogates(ch, chars[index], true);
}
else {
fatalError("The character '"+(char)ch+"' is an invalid XML character");
@@ -1455,7 +1452,7 @@
if (!XMLChar.isValid(ch)) {
// check if it is surrogate
if (++index <length) {
- surrogates(ch, text.charAt(index));
+ surrogates(ch, text.charAt(index), true);
}
else {
fatalError("The character '"+(char)ch+"' is an invalid XML character");
@@ -1477,7 +1474,7 @@
}
- protected void surrogates(int high, int low) throws IOException{
+ protected void surrogates(int high, int low, boolean inContent) throws IOException{
if (XMLChar.isHighSurrogate(high)) {
if (!XMLChar.isLowSurrogate(low)) {
//Invalid XML
@@ -1490,7 +1487,7 @@
fatalError("The character '"+(char)supplemental+"' is an invalid XML character");
}
else {
- if (content().inCData ) {
+ if (inContent && content().inCData) {
_printer.printText("]]>&#x");
_printer.printText(Integer.toHexString(supplemental));
_printer.printText(";<![CDATA[");
Modified: xerces/java/trunk/src/org/apache/xml/serialize/XML11Serializer.java
URL: http://svn.apache.org/viewcvs/xerces/java/trunk/src/org/apache/xml/serialize/XML11Serializer.java?rev=405847&r1=405846&r2=405847&view=diff
==============================================================================
--- xerces/java/trunk/src/org/apache/xml/serialize/XML11Serializer.java (original)
+++ xerces/java/trunk/src/org/apache/xml/serialize/XML11Serializer.java Fri May 12 12:35:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2002,2004,2005 The Apache Software Foundation.
+ * Copyright 1999-2002,2004-2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-
-
// Sep 14, 2000:
// Fixed problem with namespace handling. Contributed by
// David Blondeau <bl...@intalio.com>
@@ -29,10 +27,8 @@
// Aug 21, 2000:
// Added ability to omit DOCTYPE declaration.
-
package org.apache.xml.serialize;
-
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
@@ -214,7 +210,7 @@
if (!XML11Char.isXML11Valid(ch)) {
// check if it is surrogate
if (++index < end) {
- surrogates(ch, chars[index]);
+ surrogates(ch, chars[index], true);
}
else {
fatalError("The character '"+(char)ch+"' is an invalid XML character");
@@ -265,7 +261,7 @@
int ch = source.charAt(i);
if (!XML11Char.isXML11Valid(ch)) {
if (++i <length) {
- surrogates(ch, source.charAt(i));
+ surrogates(ch, source.charAt(i), false);
} else {
fatalError("The character '"+(char)ch+"' is an invalid XML character");
}
@@ -341,7 +337,7 @@
if (!XML11Char.isXML11Valid(ch)) {
// check if it is surrogate
if (++index < length) {
- surrogates(ch, text.charAt(index));
+ surrogates(ch, text.charAt(index), true);
} else {
fatalError(
"The character '"
@@ -388,7 +384,7 @@
- protected final void surrogates(int high, int low) throws IOException{
+ protected final void surrogates(int high, int low, boolean inContent) throws IOException{
if (XMLChar.isHighSurrogate(high)) {
if (!XMLChar.isLowSurrogate(low)) {
//Invalid XML
@@ -401,7 +397,7 @@
fatalError("The character '"+(char)supplemental+"' is an invalid XML character");
}
else {
- if (content().inCData ) {
+ if (inContent && content().inCData) {
_printer.printText("]]>&#x");
_printer.printText(Integer.toHexString(supplemental));
_printer.printText(";<![CDATA[");
@@ -433,7 +429,7 @@
if (!XML11Char.isXML11Valid(ch)) {
// check if it is surrogate
if (++index <length) {
- surrogates(ch, text.charAt(index));
+ surrogates(ch, text.charAt(index), true);
} else {
fatalError("The character '"+(char)ch+"' is an invalid XML character");
}
@@ -455,7 +451,7 @@
if (!XML11Char.isXML11Valid(ch)) {
// check if it is surrogate
if (++index <length) {
- surrogates(ch, text.charAt(index));
+ surrogates(ch, text.charAt(index), true);
} else {
fatalError("The character '"+(char)ch+"' is an invalid XML character");
}
@@ -487,7 +483,7 @@
if (!XML11Char.isXML11Valid(ch)) {
// check if it is surrogate
if ( length-- > 0) {
- surrogates(ch, chars[start++]);
+ surrogates(ch, chars[start++], true);
} else {
fatalError("The character '"+(char)ch+"' is an invalid XML character");
}
@@ -509,7 +505,7 @@
if (!XML11Char.isXML11Valid(ch)) {
// check if it is surrogate
if ( length-- > 0) {
- surrogates(ch, chars[start++]);
+ surrogates(ch, chars[start++], true);
} else {
fatalError("The character '"+(char)ch+"' is an invalid XML character");
}
Modified: xerces/java/trunk/src/org/apache/xml/serialize/XMLSerializer.java
URL: http://svn.apache.org/viewcvs/xerces/java/trunk/src/org/apache/xml/serialize/XMLSerializer.java?rev=405847&r1=405846&r2=405847&view=diff
==============================================================================
--- xerces/java/trunk/src/org/apache/xml/serialize/XMLSerializer.java (original)
+++ xerces/java/trunk/src/org/apache/xml/serialize/XMLSerializer.java Fri May 12 12:35:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2002,2004,2005 The Apache Software Foundation.
+ * Copyright 1999-2002,2004-2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-
-
// Sep 14, 2000:
// Fixed problem with namespace handling. Contributed by
// David Blondeau <bl...@intalio.com>
@@ -29,10 +27,8 @@
// Aug 21, 2000:
// Added ability to omit DOCTYPE declaration.
-
package org.apache.xml.serialize;
-
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
@@ -1230,7 +1226,7 @@
int ch = source.charAt(i);
if (!XMLChar.isValid(ch)) {
if (++i < length) {
- surrogates(ch, source.charAt(i));
+ surrogates(ch, source.charAt(i), false);
} else {
fatalError("The character '" + (char) ch + "' is an invalid XML character");
}
@@ -1288,7 +1284,7 @@
if (!XMLChar.isValid(ch)) {
// check if it is surrogate
if (++index <length) {
- surrogates(ch, text.charAt(index));
+ surrogates(ch, text.charAt(index), true);
} else {
fatalError("The character '"+(char)ch+"' is an invalid XML character");
}
@@ -1310,7 +1306,7 @@
if (!XMLChar.isValid(ch)) {
// check if it is surrogate
if (++index <length) {
- surrogates(ch, text.charAt(index));
+ surrogates(ch, text.charAt(index), true);
} else {
fatalError("The character '"+(char)ch+"' is an invalid XML character");
}
@@ -1342,7 +1338,7 @@
if (!XMLChar.isValid(ch)) {
// check if it is surrogate
if ( length-- > 0 ) {
- surrogates(ch, chars[start++]);
+ surrogates(ch, chars[start++], true);
} else {
fatalError("The character '"+(char)ch+"' is an invalid XML character");
}
@@ -1364,7 +1360,7 @@
if (!XMLChar.isValid(ch)) {
// check if it is surrogate
if ( length-- > 0 ) {
- surrogates(ch, chars[start++]);
+ surrogates(ch, chars[start++], true);
} else {
fatalError("The character '"+(char)ch+"' is an invalid XML character");
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org