1 /* 2 * reserved comment block 3 * DO NOT REMOVE OR ALTER! 4 */ 5 /* 6 * Copyright 1999-2004 The Apache Software Foundation. 7 * 8 * Licensed under the Apache License, Version 2.0 (the "License"); 9 * you may not use this file except in compliance with the License. 10 * You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, software 15 * distributed under the License is distributed on an "AS IS" BASIS, 16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 * See the License for the specific language governing permissions and 18 * limitations under the License. 19 */ 20 /* 21 * $Id: ExsltBase.java,v 1.1.2.1 2005/08/01 02:08:51 jeffsuttor Exp $ 22 */ 23 package com.sun.org.apache.xalan.internal.lib; 24 25 import com.sun.org.apache.xml.internal.dtm.ref.DTMNodeProxy; 26 27 import org.w3c.dom.Node; 28 import org.w3c.dom.NodeList; 29 30 /** 31 * The base class for some EXSLT extension classes. 32 * It contains common utility methods to be used by the sub-classes. 33 */ 34 public abstract class ExsltBase 35 { 36 /** 37 * Return the string value of a Node 38 * 39 * @param n The Node. 40 * @return The string value of the Node 41 */ toString(Node n)42 protected static String toString(Node n) 43 { 44 if (n instanceof DTMNodeProxy) 45 return ((DTMNodeProxy)n).getStringValue(); 46 else 47 { 48 String value = n.getNodeValue(); 49 if (value == null) 50 { 51 NodeList nodelist = n.getChildNodes(); 52 StringBuffer buf = new StringBuffer(); 53 for (int i = 0; i < nodelist.getLength(); i++) 54 { 55 Node childNode = nodelist.item(i); 56 buf.append(toString(childNode)); 57 } 58 return buf.toString(); 59 } 60 else 61 return value; 62 } 63 } 64 65 /** 66 * Convert the string value of a Node to a number. 67 * Return NaN if the string is not a valid number. 68 * 69 * @param n The Node. 70 * @return The number value of the Node 71 */ toNumber(Node n)72 protected static double toNumber(Node n) 73 { 74 double d = 0.0; 75 String str = toString(n); 76 try 77 { 78 d = Double.valueOf(str).doubleValue(); 79 } 80 catch (NumberFormatException e) 81 { 82 d= Double.NaN; 83 } 84 return d; 85 } 86 } 87