question: private int scanNCName ( String data , int endOffset , int currentOffset ) { int ch = data . charAt ( currentOffset ) ; if ( ch >= 0x80 ) { if ( ! XMLChar . isNameStart ( ch ) ) { return currentOffset ; } } else { byte chartype = fASCIICharMap [ ch ] ; if ( chartype != CHARTYPE_LETTER && chartype != CHARTYPE_UNDERSCORE ) { return currentOffset ; } } while ( ++ currentOffset < endOffset ) { ch = data . charAt ( currentOffset ) ; if ( ch >= 0x80 ) { if ( ! XMLChar . isName ( ch ) ) { break ; } } else { byte chartype = fASCIICharMap [ ch ] ; if ( chartype != CHARTYPE_LETTER && chartype != CHARTYPE_DIGIT && chartype != CHARTYPE_PERIOD && chartype != CHARTYPE_MINUS && chartype != CHARTYPE_UNDERSCORE ) { break ; } } } return currentOffset ; }
target:  Scans a NCName. From Namespaces in XML [5] NCName ::= (Letter | '_') (NCNameChar) [6] NCNameChar ::= Letter | Digit | '.' | '-' | '_' | CombiningChar | Extender