Example 16-11: EncodeURLArgs XSLT extension function

import java.util.BitSet;
public class URLEncoder {
  // See http://www.ietf.org/rfc/rfc2396.txt
  private static final String list    = " <>#%&\\/?{}[]|^`\"";
  private static       BitSet escList = new BitSet(256);
  // Return a string with rfc2396 URL encoding done on it
  public static String EncodeURLArgs( String s ) {
    if (s == null || s.equals("")) {
      return s;
    }
    else {
      StringBuffer b = new StringBuffer();
      int len = s.length();
      for (int z = 0; z < len; z++) {
        char c = s.charAt(z);
        if (escList.get(c)) {
          b.append("%"+Integer.toHexString((int)c).toUpperCase());
        }
        else {
          b.append(c);
        }
      }
      return b.toString();
    }
  }
  static {
    escList = new BitSet(256);
    int len = list.length();
    for (int z = 0; z < len; z++) {
      escList.set(list.charAt(z));
    }
  }
}