19f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/* 29f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one 39f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * or more contributor license agreements. See the NOTICE file 49f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed with this work for additional information 59f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * regarding copyright ownership. The ASF licenses this file 69f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to you under the Apache License, Version 2.0 (the "License"); 79f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * you may not use this file except in compliance with the License. 89f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * You may obtain a copy of the License at 99f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Unless required by applicable law or agreed to in writing, software 139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * See the License for the specific language governing permissions and 169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * limitations under the License. 179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/* 199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * $Id: XMLCharacterRecognizer.java 468655 2006-10-28 07:12:06Z minchau $ 209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpackage org.apache.xml.utils; 229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/** 249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Class used to verify whether the specified <var>ch</var> 259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * conforms to the XML 1.0 definition of whitespace. 269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @xsl.usage internal 279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpublic class XMLCharacterRecognizer 299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson{ 309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Returns whether the specified <var>ch</var> conforms to the XML 1.0 definition 339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * of whitespace. Refer to <A href="http://www.w3.org/TR/1998/REC-xml-19980210#NT-S"> 349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * the definition of <CODE>S</CODE></A> for details. 359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param ch Character to check as XML whitespace. 369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return =true if <var>ch</var> is XML whitespace; otherwise =false. 379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public static boolean isWhiteSpace(char ch) 399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return (ch == 0x20) || (ch == 0x09) || (ch == 0xD) || (ch == 0xA); 419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Tell if the string is whitespace. 459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param ch Character array to check as XML whitespace. 479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param start Start index of characters in the array 489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param length Number of characters in the array 499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return True if the characters in the array are 509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * XML whitespace; otherwise, false. 519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public static boolean isWhiteSpace(char ch[], int start, int length) 539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson int end = start + length; 569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson for (int s = start; s < end; s++) 589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (!isWhiteSpace(ch[s])) 609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return false; 619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return true; 649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Tell if the string is whitespace. 689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param buf StringBuffer to check as XML whitespace. 709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return True if characters in buffer are XML whitespace, false otherwise 719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public static boolean isWhiteSpace(StringBuffer buf) 739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson int n = buf.length(); 769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson for (int i = 0; i < n; i++) 789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (!isWhiteSpace(buf.charAt(i))) 809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return false; 819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return true; 849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Tell if the string is whitespace. 889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param s String to check as XML whitespace. 909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return True if characters in buffer are XML whitespace, false otherwise 919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public static boolean isWhiteSpace(String s) 939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(null != s) 969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson int n = s.length(); 989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson for (int i = 0; i < n; i++) 1009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (!isWhiteSpace(s.charAt(i))) 1029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return false; 1039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return true; 1079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson} 110