if(n != null) { switch(n.getNodeType()) { case Node.ELEMENT_NODE: return new StringValue(n.getLocalName()); case Node.ATTRIBUTE_NODE: return new StringValue(n.getLocalName()); default: return new StringValue(""); } } return new StringValue("");
if(item == null) return Sequence.EMPTY_SEQUENCE; if(!Type.subTypeOf(item.getType(), Type.NODE)) throw new XPathException(getASTNode(), "context item is not a node; got: " + Type.getTypeName(item.getType()));  Node n = ((NodeValue)item).getNode(); switch(n.getNodeType()) { case Node.ELEMENT_NODE: case Node.ATTRIBUTE_NODE: return new StringValue(n.getLocalName()); case Node.PROCESSING_INSTRUCTION_NODE: return new StringValue(((ProcessingInstruction)n).getTarget()); default: return new StringValue(""); }
    public Sequence eval(Sequence contextSequence, Item contextItem) throws XPathException {        Node n = null;  		if ((contextSequence == null) && (contextItem == null))  		  return new EmptySequence();		if(contextItem != null)			contextSequence = contextItem.toSequence();        if(getSignature().getArgumentCount() > 0) {            NodeSet result = getArgument(0).eval(contextSequence).toNodeSet();            if(result.getLength() > 0)            	n = result.item(0);        } else {        	if(contextSequence.getLength() > 0 && contextSequence.getItemType() == Type.NODE)            	n = ((NodeSet)contextSequence).item(0);        }        if(n != null) {	        switch(n.getNodeType()) {	        	case Node.ELEMENT_NODE:	            	return new StringValue(n.getLocalName());	        	case Node.ATTRIBUTE_NODE:	            	return new StringValue(n.getLocalName());	        	default:	            	return new StringValue("");	        }        }         return new StringValue("");    }