tmiller     02/04/23 11:00:52

  Modified:    java/src/org/apache/xalan/xsltc/runtime Tag:
                        jaxp-ri-1_2_0-fcs-branch TextOutput.java
  Log:
  escaped character handling improved by Santiago
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.49.4.2  +19 -10    
xml-xalan/java/src/org/apache/xalan/xsltc/runtime/TextOutput.java
  
  Index: TextOutput.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/TextOutput.java,v
  retrieving revision 1.49.4.1
  retrieving revision 1.49.4.2
  diff -u -r1.49.4.1 -r1.49.4.2
  --- TextOutput.java   3 Apr 2002 19:26:50 -0000       1.49.4.1
  +++ TextOutput.java   23 Apr 2002 18:00:52 -0000      1.49.4.2
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: TextOutput.java,v 1.49.4.1 2002/04/03 19:26:50 tmiller Exp $
  + * @(#)$Id: TextOutput.java,v 1.49.4.2 2002/04/23 18:00:52 tmiller Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -97,6 +97,7 @@
       private boolean   _startTagOpen = false;
       private boolean   _headTagOpen = false;
       private boolean   _cdataTagOpen = false;
  +    private boolean   _is8859Encoded = false;
   
       // Contains all elements that should be output as CDATA sections
       private Hashtable _cdata = null;
  @@ -178,6 +179,7 @@
           _saxHandler = handler;
           init();
        _encoding = encoding;
  +     _is8859Encoded = _encoding.equalsIgnoreCase("iso-8859-1");      
       }
   
       /**
  @@ -193,6 +195,7 @@
        _lexHandler = lex;
           init();
        _encoding = encoding;
  +     _is8859Encoded = _encoding.equalsIgnoreCase("iso-8859-1");      
       }
   
       /**
  @@ -399,17 +402,19 @@
                // the first CDATA and '>' at the beginning of the next. Other
                // special characters/sequences are _NOT_ escaped within CDATA.
                Integer I = (Integer)_cdataStack.peek();
  -             if ((I.intValue() == _depth) && (!_cdataTagOpen))
  +             if ((I.intValue() == _depth) && (!_cdataTagOpen)) {
                    startCDATA(ch, off, len);
  -             // Output characters escaped if required.
  -             else if (_escapeChars)
  -                 if (_cdataTagOpen)
  +             } 
  +             else if (_escapeChars) {
  +                 if (_cdataTagOpen) {
                        escapeCDATA(ch, off, len);
  -                 else
  +                 } else {
                        escapeCharacters(ch, off, len);
  -             // Output the chracters as the are if not.
  -             else
  +                 }
  +             } 
  +             else {
                    _saxHandler.characters(ch, off, len);
  +             }
                return;
   
            case HTML:
  @@ -532,9 +537,11 @@
   
        if (limit > ch.length) limit = ch.length;;
   
  +
        // Step through characters and escape all special characters
        for (int i = off; i < limit; i++) {
  -         switch (ch[i]) {
  +         char current = ch[i];
  +         switch (current) {
            case '&':
                _saxHandler.characters(ch, offset, i - offset);
                _saxHandler.characters(AMP, 0, AMP_length);
  @@ -558,7 +565,9 @@
            default:
                // Escape all characters not in the basic ASCII character set
                // to simple (hexadecimal) character references
  -             if (ch[i] > '\u007F') {
  +             if ( (current >= '\u007F' && current < '\u00A0') ||
  +                  (_is8859Encoded && (current > '\u00FF')) )
  +             {
                    StringBuffer buf = new StringBuffer(CHAR_ESC_START);
                    buf.append(Integer.toString((int)ch[i]));
                    buf.append(';');
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to