KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > cocoon > components > serializers > encoding > XHTMLEncoder


1 /*
2  * Copyright 1999-2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.cocoon.components.serializers.encoding;
17
18 /**
19  *
20  *
21  * @author <a HREF="mailto:pier@apache.org">Pier Fumagalli</a>, February 2003
22  * @version CVS $Id: XHTMLEncoder.java 30932 2004-07-29 17:35:38Z vgritsenko $
23  */

24 public class XHTMLEncoder extends XMLEncoder {
25
26     /**
27      * Create a new instance of this <code>XHTMLEncoder</code>.
28      */

29     public XHTMLEncoder() {
30         super("X-W3C-XHTML");
31     }
32     
33     /**
34      * Create a new instance of this <code>XHTMLEncoder</code>.
35      *
36      * @param name A name for this <code>Encoding</code>.
37      * @throws NullPointerException If one of the arguments is <b>null</b>.
38      */

39     protected XHTMLEncoder(String JavaDoc name) {
40         super(name);
41     }
42     
43     /**
44      * Return true or false wether this encoding can encode the specified
45      * character or not.
46      * <p>
47      * This method will return true for the following character range:
48      * <br />
49      * <code>
50      * <nobr>#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD]</nobr>
51      * </code>
52      * </p>
53      *
54      * @see <a HREF="http://www.w3.org/TR/REC-xml#charsets">W3C XML 1.0</a>
55      */

56     protected boolean compile(char c) {
57         for (int x = 0; x < ENCODINGS.length; x++) {
58             if (ENCODINGS[x][0][0] == c) return(false);
59         }
60         return(super.compile(c));
61     }
62
63     /**
64      * Return an array of characters representing the encoding for the
65      * specified character.
66      */

67     public char[] encode(char c) {
68         for (int x = 0; x < ENCODINGS.length; x++) {
69             if (ENCODINGS[x][0][0] == c) return(ENCODINGS[x][1]);
70         }
71         return(super.encode(c));
72     }
73
74     /**
75      * The table of all configured HTML/4.0 character encodings.
76      */

77     private static final char ENCODINGS[][][] = {
78         { { 160 } , "&nbsp;".toCharArray() },
79         { { 161 } , "&iexcl;".toCharArray() },
80         { { 162 } , "&cent;".toCharArray() },
81         { { 163 } , "&pound;".toCharArray() },
82         { { 164 } , "&curren;".toCharArray() },
83         { { 165 } , "&yen;".toCharArray() },
84         { { 166 } , "&brvbar;".toCharArray() },
85         { { 167 } , "&sect;".toCharArray() },
86         { { 168 } , "&uml;".toCharArray() },
87         { { 169 } , "&copy;".toCharArray() },
88         { { 170 } , "&ordf;".toCharArray() },
89         { { 171 } , "&laquo;".toCharArray() },
90         { { 172 } , "&not;".toCharArray() },
91         { { 173 } , "&shy;".toCharArray() },
92         { { 174 } , "&reg;".toCharArray() },
93         { { 175 } , "&macr;".toCharArray() },
94         { { 176 } , "&deg;".toCharArray() },
95         { { 177 } , "&plusmn;".toCharArray() },
96         { { 178 } , "&sup2;".toCharArray() },
97         { { 179 } , "&sup3;".toCharArray() },
98         { { 180 } , "&acute;".toCharArray() },
99         { { 181 } , "&micro;".toCharArray() },
100         { { 182 } , "&para;".toCharArray() },
101         { { 183 } , "&middot;".toCharArray() },
102         { { 184 } , "&cedil;".toCharArray() },
103         { { 185 } , "&sup1;".toCharArray() },
104         { { 186 } , "&ordm;".toCharArray() },
105         { { 187 } , "&raquo;".toCharArray() },
106         { { 188 } , "&frac14;".toCharArray() },
107         { { 189 } , "&frac12;".toCharArray() },
108         { { 190 } , "&frac34;".toCharArray() },
109         { { 191 } , "&iquest;".toCharArray() },
110         { { 192 } , "&Agrave;".toCharArray() },
111         { { 193 } , "&Aacute;".toCharArray() },
112         { { 194 } , "&Acirc;".toCharArray() },
113         { { 195 } , "&Atilde;".toCharArray() },
114         { { 196 } , "&Auml;".toCharArray() },
115         { { 197 } , "&Aring;".toCharArray() },
116         { { 198 } , "&AElig;".toCharArray() },
117         { { 199 } , "&Ccedil;".toCharArray() },
118         { { 200 } , "&Egrave;".toCharArray() },
119         { { 201 } , "&Eacute;".toCharArray() },
120         { { 202 } , "&Ecirc;".toCharArray() },
121         { { 203 } , "&Euml;".toCharArray() },
122         { { 204 } , "&Igrave;".toCharArray() },
123         { { 205 } , "&Iacute;".toCharArray() },
124         { { 206 } , "&Icirc;".toCharArray() },
125         { { 207 } , "&Iuml;".toCharArray() },
126         { { 208 } , "&ETH;".toCharArray() },
127         { { 209 } , "&Ntilde;".toCharArray() },
128         { { 210 } , "&Ograve;".toCharArray() },
129         { { 211 } , "&Oacute;".toCharArray() },
130         { { 212 } , "&Ocirc;".toCharArray() },
131         { { 213 } , "&Otilde;".toCharArray() },
132         { { 214 } , "&Ouml;".toCharArray() },
133         { { 215 } , "&times;".toCharArray() },
134         { { 216 } , "&Oslash;".toCharArray() },
135         { { 217 } , "&Ugrave;".toCharArray() },
136         { { 218 } , "&Uacute;".toCharArray() },
137         { { 219 } , "&Ucirc;".toCharArray() },
138         { { 220 } , "&Uuml;".toCharArray() },
139         { { 221 } , "&Yacute;".toCharArray() },
140         { { 222 } , "&THORN;".toCharArray() },
141         { { 223 } , "&szlig;".toCharArray() },
142         { { 224 } , "&agrave;".toCharArray() },
143         { { 225 } , "&aacute;".toCharArray() },
144         { { 226 } , "&acirc;".toCharArray() },
145         { { 227 } , "&atilde;".toCharArray() },
146         { { 228 } , "&auml;".toCharArray() },
147         { { 229 } , "&aring;".toCharArray() },
148         { { 230 } , "&aelig;".toCharArray() },
149         { { 231 } , "&ccedil;".toCharArray() },
150         { { 232 } , "&egrave;".toCharArray() },
151         { { 233 } , "&eacute;".toCharArray() },
152         { { 234 } , "&ecirc;".toCharArray() },
153         { { 235 } , "&euml;".toCharArray() },
154         { { 236 } , "&igrave;".toCharArray() },
155         { { 237 } , "&iacute;".toCharArray() },
156         { { 238 } , "&icirc;".toCharArray() },
157         { { 239 } , "&iuml;".toCharArray() },
158         { { 240 } , "&eth;".toCharArray() },
159         { { 241 } , "&ntilde;".toCharArray() },
160         { { 242 } , "&ograve;".toCharArray() },
161         { { 243 } , "&oacute;".toCharArray() },
162         { { 244 } , "&ocirc;".toCharArray() },
163         { { 245 } , "&otilde;".toCharArray() },
164         { { 246 } , "&ouml;".toCharArray() },
165         { { 247 } , "&divide;".toCharArray() },
166         { { 248 } , "&oslash;".toCharArray() },
167         { { 249 } , "&ugrave;".toCharArray() },
168         { { 250 } , "&uacute;".toCharArray() },
169         { { 251 } , "&ucirc;".toCharArray() },
170         { { 252 } , "&uuml;".toCharArray() },
171         { { 253 } , "&yacute;".toCharArray() },
172         { { 254 } , "&thorn;".toCharArray() },
173         { { 255 } , "&yuml;".toCharArray() },
174         { { 338 } , "&OElig;".toCharArray() },
175         { { 339 } , "&oelig;".toCharArray() },
176         { { 352 } , "&Scaron;".toCharArray() },
177         { { 353 } , "&scaron;".toCharArray() },
178         { { 376 } , "&Yuml;".toCharArray() },
179         { { 402 } , "&fnof;".toCharArray() },
180         { { 710 } , "&circ;".toCharArray() },
181         { { 732 } , "&tilde;".toCharArray() },
182         { { 913 } , "&Alpha;".toCharArray() },
183         { { 914 } , "&Beta;".toCharArray() },
184         { { 915 } , "&Gamma;".toCharArray() },
185         { { 916 } , "&Delta;".toCharArray() },
186         { { 917 } , "&Epsilon;".toCharArray() },
187         { { 918 } , "&Zeta;".toCharArray() },
188         { { 919 } , "&Eta;".toCharArray() },
189         { { 920 } , "&Theta;".toCharArray() },
190         { { 921 } , "&Iota;".toCharArray() },
191         { { 922 } , "&Kappa;".toCharArray() },
192         { { 923 } , "&Lambda;".toCharArray() },
193         { { 924 } , "&Mu;".toCharArray() },
194         { { 925 } , "&Nu;".toCharArray() },
195         { { 926 } , "&Xi;".toCharArray() },
196         { { 927 } , "&Omicron;".toCharArray() },
197         { { 928 } , "&Pi;".toCharArray() },
198         { { 929 } , "&Rho;".toCharArray() },
199         { { 931 } , "&Sigma;".toCharArray() },
200         { { 932 } , "&Tau;".toCharArray() },
201         { { 933 } , "&Upsilon;".toCharArray() },
202         { { 934 } , "&Phi;".toCharArray() },
203         { { 935 } , "&Chi;".toCharArray() },
204         { { 936 } , "&Psi;".toCharArray() },
205         { { 937 } , "&Omega;".toCharArray() },
206         { { 945 } , "&alpha;".toCharArray() },
207         { { 946 } , "&beta;".toCharArray() },
208         { { 947 } , "&gamma;".toCharArray() },
209         { { 948 } , "&delta;".toCharArray() },
210         { { 949 } , "&epsilon;".toCharArray() },
211         { { 950 } , "&zeta;".toCharArray() },
212         { { 951 } , "&eta;".toCharArray() },
213         { { 952 } , "&theta;".toCharArray() },
214         { { 953 } , "&iota;".toCharArray() },
215         { { 954 } , "&kappa;".toCharArray() },
216         { { 955 } , "&lambda;".toCharArray() },
217         { { 956 } , "&mu;".toCharArray() },
218         { { 957 } , "&nu;".toCharArray() },
219         { { 958 } , "&xi;".toCharArray() },
220         { { 959 } , "&omicron;".toCharArray() },
221         { { 960 } , "&pi;".toCharArray() },
222         { { 961 } , "&rho;".toCharArray() },
223         { { 962 } , "&sigmaf;".toCharArray() },
224         { { 963 } , "&sigma;".toCharArray() },
225         { { 964 } , "&tau;".toCharArray() },
226         { { 965 } , "&upsilon;".toCharArray() },
227         { { 966 } , "&phi;".toCharArray() },
228         { { 967 } , "&chi;".toCharArray() },
229         { { 968 } , "&psi;".toCharArray() },
230         { { 969 } , "&omega;".toCharArray() },
231         { { 977 } , "&thetasym;".toCharArray() },
232         { { 978 } , "&upsih;".toCharArray() },
233         { { 982 } , "&piv;".toCharArray() },
234         { { 8194 } , "&ensp;".toCharArray() },
235         { { 8195 } , "&emsp;".toCharArray() },
236         { { 8201 } , "&thinsp;".toCharArray() },
237         { { 8204 } , "&zwnj;".toCharArray() },
238         { { 8205 } , "&zwj;".toCharArray() },
239         { { 8206 } , "&lrm;".toCharArray() },
240         { { 8207 } , "&rlm;".toCharArray() },
241         { { 8211 } , "&ndash;".toCharArray() },
242         { { 8212 } , "&mdash;".toCharArray() },
243         { { 8216 } , "&lsquo;".toCharArray() },
244         { { 8217 } , "&rsquo;".toCharArray() },
245         { { 8218 } , "&sbquo;".toCharArray() },
246         { { 8220 } , "&ldquo;".toCharArray() },
247         { { 8221 } , "&rdquo;".toCharArray() },
248         { { 8222 } , "&bdquo;".toCharArray() },
249         { { 8224 } , "&dagger;".toCharArray() },
250         { { 8225 } , "&Dagger;".toCharArray() },
251         { { 8226 } , "&bull;".toCharArray() },
252         { { 8230 } , "&hellip;".toCharArray() },
253         { { 8240 } , "&permil;".toCharArray() },
254         { { 8242 } , "&prime;".toCharArray() },
255         { { 8243 } , "&Prime;".toCharArray() },
256         { { 8249 } , "&lsaquo;".toCharArray() },
257         { { 8250 } , "&rsaquo;".toCharArray() },
258         { { 8254 } , "&oline;".toCharArray() },
259         { { 8260 } , "&frasl;".toCharArray() },
260         { { 8364 } , "&euro;".toCharArray() },
261         { { 8465 } , "&image;".toCharArray() },
262         { { 8472 } , "&weierp;".toCharArray() },
263         { { 8476 } , "&real;".toCharArray() },
264         { { 8482 } , "&trade;".toCharArray() },
265         { { 8501 } , "&alefsym;".toCharArray() },
266         { { 8592 } , "&larr;".toCharArray() },
267         { { 8593 } , "&uarr;".toCharArray() },
268         { { 8594 } , "&rarr;".toCharArray() },
269         { { 8595 } , "&darr;".toCharArray() },
270         { { 8596 } , "&harr;".toCharArray() },
271         { { 8629 } , "&crarr;".toCharArray() },
272         { { 8656 } , "&lArr;".toCharArray() },
273         { { 8657 } , "&uArr;".toCharArray() },
274         { { 8658 } , "&rArr;".toCharArray() },
275         { { 8659 } , "&dArr;".toCharArray() },
276         { { 8660 } , "&hArr;".toCharArray() },
277         { { 8704 } , "&forall;".toCharArray() },
278         { { 8706 } , "&part;".toCharArray() },
279         { { 8707 } , "&exist;".toCharArray() },
280         { { 8709 } , "&empty;".toCharArray() },
281         { { 8711 } , "&nabla;".toCharArray() },
282         { { 8712 } , "&isin;".toCharArray() },
283         { { 8713 } , "&notin;".toCharArray() },
284         { { 8715 } , "&ni;".toCharArray() },
285         { { 8719 } , "&prod;".toCharArray() },
286         { { 8721 } , "&sum;".toCharArray() },
287         { { 8722 } , "&minus;".toCharArray() },
288         { { 8727 } , "&lowast;".toCharArray() },
289         { { 8730 } , "&radic;".toCharArray() },
290         { { 8733 } , "&prop;".toCharArray() },
291         { { 8734 } , "&infin;".toCharArray() },
292         { { 8736 } , "&ang;".toCharArray() },
293         { { 8743 } , "&and;".toCharArray() },
294         { { 8744 } , "&or;".toCharArray() },
295         { { 8745 } , "&cap;".toCharArray() },
296         { { 8746 } , "&cup;".toCharArray() },
297         { { 8747 } , "&int;".toCharArray() },
298         { { 8756 } , "&there4;".toCharArray() },
299         { { 8764 } , "&sim;".toCharArray() },
300         { { 8773 } , "&cong;".toCharArray() },
301         { { 8776 } , "&asymp;".toCharArray() },
302         { { 8800 } , "&ne;".toCharArray() },
303         { { 8801 } , "&equiv;".toCharArray() },
304         { { 8804 } , "&le;".toCharArray() },
305         { { 8805 } , "&ge;".toCharArray() },
306         { { 8834 } , "&sub;".toCharArray() },
307         { { 8835 } , "&sup;".toCharArray() },
308         { { 8836 } , "&nsub;".toCharArray() },
309         { { 8838 } , "&sube;".toCharArray() },
310         { { 8839 } , "&supe;".toCharArray() },
311         { { 8853 } , "&oplus;".toCharArray() },
312         { { 8855 } , "&otimes;".toCharArray() },
313         { { 8869 } , "&perp;".toCharArray() },
314         { { 8901 } , "&sdot;".toCharArray() },
315         { { 8968 } , "&lceil;".toCharArray() },
316         { { 8969 } , "&rceil;".toCharArray() },
317         { { 8970 } , "&lfloor;".toCharArray() },
318         { { 8971 } , "&rfloor;".toCharArray() },
319         { { 9001 } , "&lang;".toCharArray() },
320         { { 9002 } , "&rang;".toCharArray() },
321         { { 9674 } , "&loz;".toCharArray() },
322         { { 9824 } , "&spades;".toCharArray() },
323         { { 9827 } , "&clubs;".toCharArray() },
324         { { 9829 } , "&hearts;".toCharArray() },
325         { { 9830 } , "&diams;".toCharArray() },
326     };
327 }
328
Popular Tags