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();
         }
  
  
  

Reply via email to