operator
true if the attribute is of the type specified, and false otherwise. Replacing
    is with isnt reverses the result.
    attribute attribute-name (of element-expression)? (is | isnt) (cdata | name | names | number | numbers | nmtoken | nmtokens | nutoken | nutokens | id | idref | idrefs | notation | entity | entities | group)
 You can use the attribute is test to determine whether an attribute is of a specified type. For
        example, the following code will succeed if attribute foo is of type name, and will fail
        otherwise:
        
attribute "foo" is name
 Attribute type tests can be combined by joining the types with | and parenthesizing them. Note
        that for a data attribute, a test of its type for id, idref, idrefs,
        notation, entity, or entities will always fail because those types of
        attributes cannot be associated with a notation.
      
 Entity and notation attribute tests can be applied directly to attribute values which are declared as entity or notation, or directly to an item of an attribute declared as entities.