NodeSet set = new ArraySet(1); DocumentSet dset = new DocumentSet(); set.add(node); dset.add(node.doc);
    public Value eval(DocumentSet docs, NodeSet context, NodeProxy node) {		NodeSet set = new ArraySet(1);		DocumentSet dset = new DocumentSet();		set.add(node);		dset.add(node.doc);		double val;		// Argument is a node list		if(getArgument(0).returnsType() == Constants.TYPE_NODELIST) {			ValueSet values = new ValueSet();			NodeList args = getArgument(0).eval(dset, set, node).getNodeList();			for(int i = 0; i < args.getLength(); i++) {				try {					val = Double.parseDouble(args.item(i).getNodeValue());					values.add(new ValueNumber(Math.floor(val)));				} catch(NumberFormatException nfe) {				}			}			return values;		} else {			// does argument return a value set?			Value v = getArgument(0).eval(dset, set, node);			ValueSet values = new ValueSet();			if(v.getType() == Value.isValueSet) {				for(int i = 0; i < v.getLength(); i++) {					val = v.get(i).getNumericValue();					if(val != Double.NaN)						values.add(new ValueNumber(Math.floor(val)));				}				return values;			} else				// Argument is a single number				return new ValueNumber(Math.floor(v.getNumericValue()));		}	}