1 61 62 63 package org.jaxen.function; 64 65 import java.util.List ; 66 67 import org.jaxen.Context; 68 import org.jaxen.Function; 69 import org.jaxen.FunctionCallException; 70 import org.jaxen.Navigator; 71 72 87 public class LocalNameFunction implements Function 88 { 89 90 93 public LocalNameFunction() {} 94 95 107 public Object call(Context context, 108 List args) throws FunctionCallException 109 { 110 if ( args.size() == 0 ) 111 { 112 return evaluate( context.getNodeSet(), 113 context.getNavigator() ); 114 } 115 116 if ( args.size() == 1 ) 117 { 118 return evaluate( args, 119 context.getNavigator() ); 120 } 121 122 throw new FunctionCallException( "local-name() requires zero or one argument." ); 123 } 124 125 135 public static String evaluate(List list, 136 Navigator nav) throws FunctionCallException 137 { 138 if ( ! list.isEmpty() ) 139 { 140 Object first = list.get(0); 141 142 if (first instanceof List ) 143 { 144 return evaluate( (List ) first, 145 nav ); 146 } 147 else if ( nav.isElement( first ) ) 148 { 149 return nav.getElementName( first ); 150 } 151 else if ( nav.isAttribute( first ) ) 152 { 153 return nav.getAttributeName( first ); 154 } 155 else if ( nav.isProcessingInstruction( first ) ) 156 { 157 return nav.getProcessingInstructionTarget( first ); 158 } 159 else if ( nav.isNamespace( first ) ) 160 { 161 return nav.getNamespacePrefix( first ); 162 } 163 else if ( nav.isDocument( first ) ) 164 { 165 return ""; 166 } 167 else if ( nav.isComment( first ) ) 168 { 169 return ""; 170 } 171 else if ( nav.isText( first ) ) 172 { 173 return ""; 174 } 175 else { 176 throw new FunctionCallException("The argument to the local-name function must be a node-set"); 177 } 178 } 179 180 return ""; 181 } 182 183 } 184 185 | Popular Tags |