@Override
    public void startElement(String uri, String localName, String qName,
            Attributes atts) throws SAXException {
        depth++;

        if ("http://www.w3.org/1999/xhtml" != uri) {
            return;
        }

        String id = null;
        String[] itemProp = null;
        String[] itemRef = null;
        boolean itemScope = false;

        int len = atts.getLength();
        for (int i = 0; i < len; i++) {
            if (atts.getURI(i).isEmpty()) {
                String attLocal = atts.getLocalName(i);
                String attValue = atts.getValue(i);
                if ("id" == attLocal) {
                    id = attValue;
                } else if ("itemprop" == attLocal) {
                    itemProp = AttributeUtil.split(attValue);
                } else if ("itemref" == attLocal) {
                    itemRef = AttributeUtil.split(attValue);
                } else if ("itemscope" == attLocal) {
                    itemScope = true;
                }
            }
        }

        if (id != null || itemProp != null || itemScope) {
            Element elm = new Element(new LocatorImpl(locator), itemProp,
                    itemRef, itemScope);

            if (itemProp != null) {
                properties.add(elm);
            } else if (itemScope) {
                items.add(elm);
            }
            if (!idmap.containsKey(id)) {
                idmap.put(id, elm);
            }

            if (builder != null) {
                builder.appendChild(elm);
            }
            builder = elm.new Builder(builder, depth);
        }
    }
@see nu.validator.checker.Checker#startElement(java.lang.String,
     java.lang.String, java.lang.String, org.xml.sax.Attributes)
src/nu/validator/checker/MicrodataChecker.java