sboag 99/12/13 08:57:05
Modified: src/org/apache/xalan/xpath/xml FormatterToHTML.java
FormatterToXML.java
Log:
Fixed normalization of cr/lf of input.
Revision Changes Path
1.10 +36 -4
xml-xalan/src/org/apache/xalan/xpath/xml/FormatterToHTML.java
Index: FormatterToHTML.java
===================================================================
RCS file:
/home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/FormatterToHTML.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- FormatterToHTML.java 1999/12/13 07:35:49 1.9
+++ FormatterToHTML.java 1999/12/13 16:57:04 1.10
@@ -367,7 +367,8 @@
{
super.initAttrCharsMap();
m_attrCharsMap[(int)'\n'] = 'S';
- m_attrCharsMap[(int)10] = 'S';
+ m_charsMap[0x0A] = 'S';
+ m_charsMap[0x0D] = 'S';
}
/**
@@ -389,6 +390,8 @@
{
m_charsMap[i] = 'S';
}
+ m_charsMap[0x0A] = 'S';
+ m_charsMap[0x0D] = 'S';
n = (255 > SPECIALSSIZE) ? 255 : SPECIALSSIZE;
for(int i = 160; i < n; i++)
{
@@ -721,10 +724,25 @@
}
else
{
- if ('\n' == ch)
+ if ((0x0D == ch) && ((i+1) < strLen) && (0x0A==string.charAt(i+1)))
{
outputLineSep();
+ i++;
}
+ else if ((0x0A == ch) && ((i+1) < strLen) &&
(0x0D==string.charAt(i+1)))
+ {
+ outputLineSep();
+ i++;
+ }
+ else if (0x0D == ch)
+ {
+ outputLineSep();
+ i++;
+ }
+ else if ('\n' == ch)
+ {
+ outputLineSep();
+ }
else if (10 == ch)
{
outputLineSep();
@@ -856,8 +874,22 @@
accum(ch);
continue;
}
-
- if ('\n' == ch)
+ else if ((0x0A == ch) && ((i+1) < end) && (0x0D==chars[i+1]))
+ {
+ outputLineSep();
+ i++;
+ }
+ if ((0x0D == ch) && ((i+1) < end) && (0x0A==chars[i+1]))
+ {
+ outputLineSep();
+ i++;
+ }
+ else if (0x0D == ch)
+ {
+ outputLineSep();
+ i++;
+ }
+ else if ('\n' == ch)
{
outputLineSep();
}
1.11 +31 -4
xml-xalan/src/org/apache/xalan/xpath/xml/FormatterToXML.java
Index: FormatterToXML.java
===================================================================
RCS file:
/home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/FormatterToXML.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- FormatterToXML.java 1999/12/13 07:35:49 1.10
+++ FormatterToXML.java 1999/12/13 16:57:04 1.11
@@ -256,6 +256,8 @@
{
m_attrCharsMap[(int)i] = 'S';
}
+ m_charsMap[0x0A] = 'S';
+ m_charsMap[0x0D] = 'S';
}
/**
@@ -277,8 +279,8 @@
{
m_charsMap[i] = 'S';
}
- m_charsMap[10] = '\0';
- m_charsMap[13] = '\0';
+ m_charsMap[0x0A] = 'S';
+ m_charsMap[0x0D] = 'S';
m_charsMap[9] = '\0';
for(int i = m_maxCharacter; i < SPECIALSSIZE; i++)
{
@@ -1035,10 +1037,25 @@
}
else
{
- if ('\n' == ch)
+ if ((0x0D == ch) && ((i+1) < end) && (0x0A==chars[i+1]))
{
outputLineSep();
+ i++;
}
+ else if ((0x0A == ch) && ((i+1) < end) && (0x0D==chars[i+1]))
+ {
+ outputLineSep();
+ i++;
+ }
+ else if (0x0D == ch)
+ {
+ outputLineSep();
+ i++;
+ }
+ else if ('\n' == ch)
+ {
+ outputLineSep();
+ }
else if ('<' == ch)
{
accum('&');
@@ -1139,7 +1156,17 @@
for(int i = start; i < end; i++)
{
char c = ch[i];
- if('\n' == c)
+ if ((0x0D == c) && ((i+1) < end) && (0x0A==ch[i+1]))
+ {
+ outputLineSep();
+ i++;
+ }
+ else if ((0x0A == c) && ((i+1) < end) && (0x0D==ch[i+1]))
+ {
+ outputLineSep();
+ i++;
+ }
+ else if('\n' == c)
{
outputLineSep();
}