private void processAttributes(int item){ do { switch(getAIIState(item)){ case STATE_ATTRIBUTE_U_LN_QN: { final String uri = readStructureString(); final String localName = readStructureString(); final String prefix = getPrefixFromQName(readStructureString()); _attributeCache.addAttributeWithPrefix(prefix, uri, localName, readStructureString(), readContentString()); break; } case STATE_ATTRIBUTE_P_U_LN: _attributeCache.addAttributeWithPrefix(readStructureString(), readStructureString(), readStructureString(), readStructureString(), readContentString()); break; case STATE_ATTRIBUTE_U_LN: // _attributeCache follows SAX convention _attributeCache.addAttributeWithPrefix("", readStructureString(), readStructureString(), readStructureString(), readContentString()); break; case STATE_ATTRIBUTE_LN: { _attributeCache.addAttributeWithPrefix("", "", readStructureString(), readStructureString(), readContentString()); break; } default : assert false : "Internal XSB Error: wrong attribute state, Item="+item; } readStructure(); item = peekStructure(); } while((item & TYPE_MASK) == T_ATTRIBUTE); }