docs: public static Expression attributeValue(Data data, TagLibTag tag, String type, boolean parseExpression, boolean isNonName, Expression noExpression) throws TemplateException {
  	Expression expr;
  	try {
  	    ExprTransformer transfomer = null;
  	    if (parseExpression) {
  		transfomer = tag.getTagLib().getExprTransfomer();
  	    }
  	    else {
  		if (data.getSimpleExprTransformer() == null) {
  		    data.setSimpleExprTransformer(new SimpleExprTransformer('#'));
  		    // set.setSpecialChar();
  		}
  		transfomer = data.getSimpleExprTransformer();
  	    }
  	    if (isNonName) {
  		int pos = data.srcCode.getPos();
  		try {
  		    expr = transfomer.transform(data);
  		}
  		catch (TemplateException ete) {
  		    if (data.srcCode.getPos() == pos) expr = noExpression;
  		    else throw ete;
  		}
  	    }
  	    else {
  		if (data.settings.handleUnQuotedAttrValueAsString) {
  		    boolean alt = data.allowLowerThan;
  		    data.allowLowerThan = true;
  		    try {
  			expr = transfomer.transformAsString(data);
  		    }
  		    finally {
  			data.allowLowerThan = alt;
  		    }
  
  		}
  		else expr = transfomer.transform(data);
  	    }
  	    if (type.length() > 0) {
  		expr = data.factory.toExpression(expr, type);
  	    }
  	}
  	catch (TagLibException e) {
  	    throw new TemplateException(data.srcCode, e);
  	}
  	return expr;
      }