private static void parseCriteriaUser(Element attrElem, IndividualAttributeMaps iam) 
                                                                throws IOException {
        try {
            double hr=1.0;
            if (attrElem.getAttribute("type").equals("abstract")) {
                
                NodeList nList = attrElem.getChildNodes();
                for (int i = 0; i < nList.getLength(); i++) {
                    Node node = nList.item(i);
                    if (node.getNodeType() == Node.ELEMENT_NODE) {
                        parseCriteriaUser((Element)node, iam);
                    }
                }
            } 
            else {
                String name = attrElem.getAttribute("name");
                hr = Double.parseDouble(attrElem.getAttribute("weight"));               
                Element domainElem = (Element) attrElem.getElementsByTagName(XML_DOMAIN).item(0);
                AttributeDomain domain = parseDomain(domainElem);
                if (domainElem.getAttribute("type").equals("continuous")) {
                    String unitsName = domainElem.getAttribute("unit");
                    iam.attributeUnits = unitsName;
                }
                iam.fillWeightMap(name, hr);
                iam.fillDomainMap(name, domain);
            }
                        
        } catch (IOException ex) {
            throw ex;
        } catch (Exception ex) {
            throw new IOException(attrElem.getUserData(PositionalXMLReader.LINE_NUMBER).toString());
        }
    }