System.out.println(pprint());
    public Sequence eval(Sequence contextSequence, Item contextItem)            throws XPathException {        MemTreeBuilder builder = context.getDocumentBuilder();        context.proceed(this, builder);        Sequence nameSeq = qnameExpr.eval(contextSequence, contextItem);        if(nameSeq.getLength() != 1)            throw new XPathException(getASTNode(), "The name expression should evaluate to a single value");        QName qn = QName.parse(context, nameSeq.getStringValue());                String value;        Sequence valueSeq = valueExpr.eval(contextSequence, contextItem);        if(valueSeq.getLength() == 0)            value = "";        else {            StringBuffer buf = new StringBuffer();            for(SequenceIterator i = valueSeq.iterate(); i.hasNext(); ) {                Item next = i.nextItem();                buf.append(next.getStringValue());                if(i.hasNext())                    buf.append(' ');            }            value = buf.toString();        }        int nodeNr = builder.addAttribute(qn, value);        NodeImpl node = ((DocumentImpl)builder.getDocument()).getAttribute(nodeNr);        return node;    }