private void attributeNameComplete() throws SAXException {
        attributeName = new String(strBuf, 0, strBufLen).intern();

        if (attributes == null) {
            attributes = new AttributesImpl();
        }

        /*
         * When the user agent leaves the attribute name state (and before
         * emitting the tag token, if appropriate), the complete attribute's
         * name must be compared to the other attributes on the same token; if
         * there is already an attribute on the token with the exact same name,
         * then this is a parse error and the new attribute must be dropped,
         * along with the value that gets associated with it (if any).
         */
        for (int i = 0; i < attributes.getLength(); i++) {
            if (attributes.getQName(i).equals(attributeName)) {
                errDuplicateAttribute();
                attributeName = null;
                return;
            }
        }
    }
Collect a set of attribues and values from the data part of a PI.

<p>
The bulk of this method and associated methods that follow it here are
copied from the nu.validator.htmlparser.impl.Tokenizer class, with
appropriate modifications.
</p>

@see nu.validator.htmlparser.impl.Tokenizer
@see nu.validator.htmlparser.impl.ErrorReportingTokenizer
src/nu/validator/checker/XmlPiChecker.java