attrQName = QName.parse(context, constructor.getQName());
attrQName = QName.parse(context, constructor.getQName(), "");
	public Sequence eval(		Sequence contextSequence,		Item contextItem)		throws XPathException {		context.pushNamespaceContext();		MemTreeBuilder builder = context.getDocumentBuilder();		// declare namespaces		if(namespaceDecls != null) {			for(int i = 0; i < namespaceDecls.length; i++) {				context.declareInScopeNamespace(namespaceDecls[i].getLocalName(), namespaceDecls[i].getNamespaceURI());			}		}		// process attributes		AttributesImpl attrs = new AttributesImpl();		if(attributes != null) {			AttributeConstructor constructor;			Sequence attrValues;			QName attrQName;			// first, search for xmlns attributes and declare in-scope namespaces			for(int i = 0; i < attributes.length; i++) {				constructor = (AttributeConstructor)attributes[i];				if(constructor.isNamespaceDeclaration()) {					int p = constructor.getQName().indexOf(':');					if(p < 0)						context.declareInScopeNamespace("", constructor.getLiteralValue());					else {						String prefix = constructor.getQName().substring(p + 1);						context.declareInScopeNamespace(prefix, constructor.getLiteralValue());					}				}			}			// process the remaining attributesCharArr			for(int i = 0; i < attributes.length; i++) {			    context.proceed(this, builder);				constructor = (AttributeConstructor)attributes[i];				attrValues = constructor.eval(contextSequence, contextItem);				attrQName = QName.parse(context, constructor.getQName());				attrs.addAttribute(attrQName.getNamespaceURI(), attrQName.getLocalName(),						attrQName.toString(), "CDATA", attrValues.getStringValue());			}		}		context.proceed(this, builder);				// create the element		Sequence qnameSeq = qnameExpr.eval(contextSequence, contextItem);		if(qnameSeq.getLength() != 1)		    throw new XPathException("Type error: the node name should evaluate to a single string");		QName qn = QName.parse(context, qnameSeq.getStringValue());				int nodeNr = builder.startElement(qn, attrs);		if(namespaceDecls != null) {			for(int i = 0; i < namespaceDecls.length; i++) {				builder.namespaceNode(namespaceDecls[i]);			}		}		// process element contents		if(content != null) {			content.eval(contextSequence, contextItem);		}		builder.endElement();		NodeImpl node = ((DocumentImpl)builder.getDocument()).getNode(nodeNr);		context.popNamespaceContext();		return node;	}