| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.cocoon.components.serializers.encoding; |
| |
| /** |
| * |
| * |
| * @author <a href="mailto:pier@apache.org">Pier Fumagalli</a>, February 2003 |
| * @version CVS $Id:XHTMLEncoder.java 30932 2004-07-29 19:35:38 +0200 (Thu, 29 Jul 2004) vgritsenko $ |
| */ |
| public class XHTMLEncoder extends XMLEncoder { |
| |
| /** |
| * Create a new instance of this <code>XHTMLEncoder</code>. |
| */ |
| public XHTMLEncoder() { |
| super("X-W3C-XHTML"); |
| } |
| |
| /** |
| * Create a new instance of this <code>XHTMLEncoder</code>. |
| * |
| * @param name A name for this <code>Encoding</code>. |
| * @throws NullPointerException If one of the arguments is <b>null</b>. |
| */ |
| protected XHTMLEncoder(String name) { |
| super(name); |
| } |
| |
| /** |
| * Return true or false whether this encoding can encode the specified |
| * character or not. |
| * <p> |
| * This method will return true for the following character range: |
| * <br /> |
| * <code> |
| * <nobr>#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD]</nobr> |
| * </code> |
| * </p> |
| * |
| * @see <a href="http://www.w3.org/TR/REC-xml#charsets">W3C XML 1.0</a> |
| */ |
| protected boolean compile(char c) { |
| for (int x = 0; x < ENCODINGS.length; x++) { |
| if (ENCODINGS[x][0][0] == c) return(false); |
| } |
| return(super.compile(c)); |
| } |
| |
| /** |
| * Return an array of characters representing the encoding for the |
| * specified character. |
| */ |
| public char[] encode(char c) { |
| for (int x = 0; x < ENCODINGS.length; x++) { |
| if (ENCODINGS[x][0][0] == c) return(ENCODINGS[x][1]); |
| } |
| return(super.encode(c)); |
| } |
| |
| /** |
| * The table of all configured HTML/4.0 character encodings. |
| */ |
| private static final char ENCODINGS[][][] = { |
| { { 39 } , "'".toCharArray() }, |
| { { 160 } , " ".toCharArray() }, |
| { { 161 } , "¡".toCharArray() }, |
| { { 162 } , "¢".toCharArray() }, |
| { { 163 } , "£".toCharArray() }, |
| { { 164 } , "¤".toCharArray() }, |
| { { 165 } , "¥".toCharArray() }, |
| { { 166 } , "¦".toCharArray() }, |
| { { 167 } , "§".toCharArray() }, |
| { { 168 } , "¨".toCharArray() }, |
| { { 169 } , "©".toCharArray() }, |
| { { 170 } , "ª".toCharArray() }, |
| { { 171 } , "«".toCharArray() }, |
| { { 172 } , "¬".toCharArray() }, |
| { { 173 } , "­".toCharArray() }, |
| { { 174 } , "®".toCharArray() }, |
| { { 175 } , "¯".toCharArray() }, |
| { { 176 } , "°".toCharArray() }, |
| { { 177 } , "±".toCharArray() }, |
| { { 178 } , "²".toCharArray() }, |
| { { 179 } , "³".toCharArray() }, |
| { { 180 } , "´".toCharArray() }, |
| { { 181 } , "µ".toCharArray() }, |
| { { 182 } , "¶".toCharArray() }, |
| { { 183 } , "·".toCharArray() }, |
| { { 184 } , "¸".toCharArray() }, |
| { { 185 } , "¹".toCharArray() }, |
| { { 186 } , "º".toCharArray() }, |
| { { 187 } , "»".toCharArray() }, |
| { { 188 } , "¼".toCharArray() }, |
| { { 189 } , "½".toCharArray() }, |
| { { 190 } , "¾".toCharArray() }, |
| { { 191 } , "¿".toCharArray() }, |
| { { 192 } , "À".toCharArray() }, |
| { { 193 } , "Á".toCharArray() }, |
| { { 194 } , "Â".toCharArray() }, |
| { { 195 } , "Ã".toCharArray() }, |
| { { 196 } , "Ä".toCharArray() }, |
| { { 197 } , "Å".toCharArray() }, |
| { { 198 } , "Æ".toCharArray() }, |
| { { 199 } , "Ç".toCharArray() }, |
| { { 200 } , "È".toCharArray() }, |
| { { 201 } , "É".toCharArray() }, |
| { { 202 } , "Ê".toCharArray() }, |
| { { 203 } , "Ë".toCharArray() }, |
| { { 204 } , "Ì".toCharArray() }, |
| { { 205 } , "Í".toCharArray() }, |
| { { 206 } , "Î".toCharArray() }, |
| { { 207 } , "Ï".toCharArray() }, |
| { { 208 } , "Ð".toCharArray() }, |
| { { 209 } , "Ñ".toCharArray() }, |
| { { 210 } , "Ò".toCharArray() }, |
| { { 211 } , "Ó".toCharArray() }, |
| { { 212 } , "Ô".toCharArray() }, |
| { { 213 } , "Õ".toCharArray() }, |
| { { 214 } , "Ö".toCharArray() }, |
| { { 215 } , "×".toCharArray() }, |
| { { 216 } , "Ø".toCharArray() }, |
| { { 217 } , "Ù".toCharArray() }, |
| { { 218 } , "Ú".toCharArray() }, |
| { { 219 } , "Û".toCharArray() }, |
| { { 220 } , "Ü".toCharArray() }, |
| { { 221 } , "Ý".toCharArray() }, |
| { { 222 } , "Þ".toCharArray() }, |
| { { 223 } , "ß".toCharArray() }, |
| { { 224 } , "à".toCharArray() }, |
| { { 225 } , "á".toCharArray() }, |
| { { 226 } , "â".toCharArray() }, |
| { { 227 } , "ã".toCharArray() }, |
| { { 228 } , "ä".toCharArray() }, |
| { { 229 } , "å".toCharArray() }, |
| { { 230 } , "æ".toCharArray() }, |
| { { 231 } , "ç".toCharArray() }, |
| { { 232 } , "è".toCharArray() }, |
| { { 233 } , "é".toCharArray() }, |
| { { 234 } , "ê".toCharArray() }, |
| { { 235 } , "ë".toCharArray() }, |
| { { 236 } , "ì".toCharArray() }, |
| { { 237 } , "í".toCharArray() }, |
| { { 238 } , "î".toCharArray() }, |
| { { 239 } , "ï".toCharArray() }, |
| { { 240 } , "ð".toCharArray() }, |
| { { 241 } , "ñ".toCharArray() }, |
| { { 242 } , "ò".toCharArray() }, |
| { { 243 } , "ó".toCharArray() }, |
| { { 244 } , "ô".toCharArray() }, |
| { { 245 } , "õ".toCharArray() }, |
| { { 246 } , "ö".toCharArray() }, |
| { { 247 } , "÷".toCharArray() }, |
| { { 248 } , "ø".toCharArray() }, |
| { { 249 } , "ù".toCharArray() }, |
| { { 250 } , "ú".toCharArray() }, |
| { { 251 } , "û".toCharArray() }, |
| { { 252 } , "ü".toCharArray() }, |
| { { 253 } , "ý".toCharArray() }, |
| { { 254 } , "þ".toCharArray() }, |
| { { 255 } , "ÿ".toCharArray() }, |
| { { 338 } , "Œ".toCharArray() }, |
| { { 339 } , "œ".toCharArray() }, |
| { { 352 } , "Š".toCharArray() }, |
| { { 353 } , "š".toCharArray() }, |
| { { 376 } , "Ÿ".toCharArray() }, |
| { { 402 } , "ƒ".toCharArray() }, |
| { { 710 } , "ˆ".toCharArray() }, |
| { { 732 } , "˜".toCharArray() }, |
| { { 913 } , "Α".toCharArray() }, |
| { { 914 } , "Β".toCharArray() }, |
| { { 915 } , "Γ".toCharArray() }, |
| { { 916 } , "Δ".toCharArray() }, |
| { { 917 } , "Ε".toCharArray() }, |
| { { 918 } , "Ζ".toCharArray() }, |
| { { 919 } , "Η".toCharArray() }, |
| { { 920 } , "Θ".toCharArray() }, |
| { { 921 } , "Ι".toCharArray() }, |
| { { 922 } , "Κ".toCharArray() }, |
| { { 923 } , "Λ".toCharArray() }, |
| { { 924 } , "Μ".toCharArray() }, |
| { { 925 } , "Ν".toCharArray() }, |
| { { 926 } , "Ξ".toCharArray() }, |
| { { 927 } , "Ο".toCharArray() }, |
| { { 928 } , "Π".toCharArray() }, |
| { { 929 } , "Ρ".toCharArray() }, |
| { { 931 } , "Σ".toCharArray() }, |
| { { 932 } , "Τ".toCharArray() }, |
| { { 933 } , "Υ".toCharArray() }, |
| { { 934 } , "Φ".toCharArray() }, |
| { { 935 } , "Χ".toCharArray() }, |
| { { 936 } , "Ψ".toCharArray() }, |
| { { 937 } , "Ω".toCharArray() }, |
| { { 945 } , "α".toCharArray() }, |
| { { 946 } , "β".toCharArray() }, |
| { { 947 } , "γ".toCharArray() }, |
| { { 948 } , "δ".toCharArray() }, |
| { { 949 } , "ε".toCharArray() }, |
| { { 950 } , "ζ".toCharArray() }, |
| { { 951 } , "η".toCharArray() }, |
| { { 952 } , "θ".toCharArray() }, |
| { { 953 } , "ι".toCharArray() }, |
| { { 954 } , "κ".toCharArray() }, |
| { { 955 } , "λ".toCharArray() }, |
| { { 956 } , "μ".toCharArray() }, |
| { { 957 } , "ν".toCharArray() }, |
| { { 958 } , "ξ".toCharArray() }, |
| { { 959 } , "ο".toCharArray() }, |
| { { 960 } , "π".toCharArray() }, |
| { { 961 } , "ρ".toCharArray() }, |
| { { 962 } , "ς".toCharArray() }, |
| { { 963 } , "σ".toCharArray() }, |
| { { 964 } , "τ".toCharArray() }, |
| { { 965 } , "υ".toCharArray() }, |
| { { 966 } , "φ".toCharArray() }, |
| { { 967 } , "χ".toCharArray() }, |
| { { 968 } , "ψ".toCharArray() }, |
| { { 969 } , "ω".toCharArray() }, |
| { { 977 } , "ϑ".toCharArray() }, |
| { { 978 } , "ϒ".toCharArray() }, |
| { { 982 } , "ϖ".toCharArray() }, |
| { { 8194 } , " ".toCharArray() }, |
| { { 8195 } , " ".toCharArray() }, |
| { { 8201 } , " ".toCharArray() }, |
| { { 8204 } , "‌".toCharArray() }, |
| { { 8205 } , "‍".toCharArray() }, |
| { { 8206 } , "‎".toCharArray() }, |
| { { 8207 } , "‏".toCharArray() }, |
| { { 8211 } , "–".toCharArray() }, |
| { { 8212 } , "—".toCharArray() }, |
| { { 8216 } , "‘".toCharArray() }, |
| { { 8217 } , "’".toCharArray() }, |
| { { 8218 } , "‚".toCharArray() }, |
| { { 8220 } , "“".toCharArray() }, |
| { { 8221 } , "”".toCharArray() }, |
| { { 8222 } , "„".toCharArray() }, |
| { { 8224 } , "†".toCharArray() }, |
| { { 8225 } , "‡".toCharArray() }, |
| { { 8226 } , "•".toCharArray() }, |
| { { 8230 } , "…".toCharArray() }, |
| { { 8240 } , "‰".toCharArray() }, |
| { { 8242 } , "′".toCharArray() }, |
| { { 8243 } , "″".toCharArray() }, |
| { { 8249 } , "‹".toCharArray() }, |
| { { 8250 } , "›".toCharArray() }, |
| { { 8254 } , "‾".toCharArray() }, |
| { { 8260 } , "⁄".toCharArray() }, |
| { { 8364 } , "€".toCharArray() }, |
| { { 8465 } , "ℑ".toCharArray() }, |
| { { 8472 } , "℘".toCharArray() }, |
| { { 8476 } , "ℜ".toCharArray() }, |
| { { 8482 } , "™".toCharArray() }, |
| { { 8501 } , "ℵ".toCharArray() }, |
| { { 8592 } , "←".toCharArray() }, |
| { { 8593 } , "↑".toCharArray() }, |
| { { 8594 } , "→".toCharArray() }, |
| { { 8595 } , "↓".toCharArray() }, |
| { { 8596 } , "↔".toCharArray() }, |
| { { 8629 } , "↵".toCharArray() }, |
| { { 8656 } , "⇐".toCharArray() }, |
| { { 8657 } , "⇑".toCharArray() }, |
| { { 8658 } , "⇒".toCharArray() }, |
| { { 8659 } , "⇓".toCharArray() }, |
| { { 8660 } , "⇔".toCharArray() }, |
| { { 8704 } , "∀".toCharArray() }, |
| { { 8706 } , "∂".toCharArray() }, |
| { { 8707 } , "∃".toCharArray() }, |
| { { 8709 } , "∅".toCharArray() }, |
| { { 8711 } , "∇".toCharArray() }, |
| { { 8712 } , "∈".toCharArray() }, |
| { { 8713 } , "∉".toCharArray() }, |
| { { 8715 } , "∋".toCharArray() }, |
| { { 8719 } , "∏".toCharArray() }, |
| { { 8721 } , "∑".toCharArray() }, |
| { { 8722 } , "−".toCharArray() }, |
| { { 8727 } , "∗".toCharArray() }, |
| { { 8730 } , "√".toCharArray() }, |
| { { 8733 } , "∝".toCharArray() }, |
| { { 8734 } , "∞".toCharArray() }, |
| { { 8736 } , "∠".toCharArray() }, |
| { { 8743 } , "∧".toCharArray() }, |
| { { 8744 } , "∨".toCharArray() }, |
| { { 8745 } , "∩".toCharArray() }, |
| { { 8746 } , "∪".toCharArray() }, |
| { { 8747 } , "∫".toCharArray() }, |
| { { 8756 } , "∴".toCharArray() }, |
| { { 8764 } , "∼".toCharArray() }, |
| { { 8773 } , "≅".toCharArray() }, |
| { { 8776 } , "≈".toCharArray() }, |
| { { 8800 } , "≠".toCharArray() }, |
| { { 8801 } , "≡".toCharArray() }, |
| { { 8804 } , "≤".toCharArray() }, |
| { { 8805 } , "≥".toCharArray() }, |
| { { 8834 } , "⊂".toCharArray() }, |
| { { 8835 } , "⊃".toCharArray() }, |
| { { 8836 } , "⊄".toCharArray() }, |
| { { 8838 } , "⊆".toCharArray() }, |
| { { 8839 } , "⊇".toCharArray() }, |
| { { 8853 } , "⊕".toCharArray() }, |
| { { 8855 } , "⊗".toCharArray() }, |
| { { 8869 } , "⊥".toCharArray() }, |
| { { 8901 } , "⋅".toCharArray() }, |
| { { 8968 } , "⌈".toCharArray() }, |
| { { 8969 } , "⌉".toCharArray() }, |
| { { 8970 } , "⌊".toCharArray() }, |
| { { 8971 } , "⌋".toCharArray() }, |
| { { 9001 } , "⟨".toCharArray() }, |
| { { 9002 } , "⟩".toCharArray() }, |
| { { 9674 } , "◊".toCharArray() }, |
| { { 9824 } , "♠".toCharArray() }, |
| { { 9827 } , "♣".toCharArray() }, |
| { { 9829 } , "♥".toCharArray() }, |
| { { 9830 } , "♦".toCharArray() }, |
| }; |
| } |