org.apache.xalan.serialize
Class CharInfo

java.lang.Object
  |
  +--org.apache.xalan.serialize.CharInfo

public class CharInfo
extends java.lang.Object

This class provides services that tell if a character should have special treatement, such as entity reference substitution or normalization of a newline character. It also provides character to entity reference lookup. DEVELOPERS: See Known Issue in the constructor.


Field Summary
static java.lang.String HTML_ENTITIES_RESOURCE
          The name of the HTML entities file.
static char S_CARRIAGERETURN
          The carriage return character, which the parser should always normalize.
static char S_LINEFEED
          The linefeed character, which the parser should always normalize.
static java.lang.String XML_ENTITIES_RESOURCE
          The name of the XML entities file.
 
Constructor Summary
CharInfo(java.lang.String entitiesResource)
          Constructor that reads in a resource file that describes the mapping of characters to entity references.
 
Method Summary
 java.lang.String getEntityNameForChar(char value)
          Resolve a character to an entity reference name.
 boolean isSpecial(char value)
          Tell if the character argument should have special treatment.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HTML_ENTITIES_RESOURCE

public static java.lang.String HTML_ENTITIES_RESOURCE
The name of the HTML entities file. If specified, the file will be resource loaded with the default class loader.

XML_ENTITIES_RESOURCE

public static java.lang.String XML_ENTITIES_RESOURCE
The name of the XML entities file. If specified, the file will be resource loaded with the default class loader.

S_LINEFEED

public static char S_LINEFEED
The linefeed character, which the parser should always normalize.

S_CARRIAGERETURN

public static char S_CARRIAGERETURN
The carriage return character, which the parser should always normalize.
Constructor Detail

CharInfo

public CharInfo(java.lang.String entitiesResource)
Constructor that reads in a resource file that describes the mapping of characters to entity references. Resource files must be encoded in UTF-8 and have a format like:
 # First char # is a comment
 Entity numericValue
 quot 34
 amp 38
 
(Note: Why don't we just switch to .properties files? Oct-01 -sc)
Parameters:
entitiesResource - Name of entities resource file that should be loaded, which describes that mapping of characters to entity references.
Method Detail

getEntityNameForChar

public java.lang.String getEntityNameForChar(char value)
Resolve a character to an entity reference name. This is reusing a stored key object, in an effort to avoid heap activity. Unfortunately, that introduces a threading risk. Simplest fix for now is to make it a synchronized method, or to give up the reuse; I see very little performance difference between them. Long-term solution would be to replace the hashtable with a sparse array keyed directly from the character's integer value; see DTM's string pool for a related solution.
Parameters:
value - character value that should be resolved to a name.
Returns:
name of character entity, or null if not found.

isSpecial

public boolean isSpecial(char value)
Tell if the character argument should have special treatment.
Parameters:
value - character value.
Returns:
true if the character should have any special treatment.


Copyright © 2002 Apache XML Project. All Rights Reserved.