We provide a type class for tag and attribute names. Instances can be names that preserve case, names with lowercase letters as canonical representation.
- class Ord name => C name where
- class Ord ident => Tag ident where
- class Ord ident => Attribute ident where
- match :: C name => String -> name -> Bool
- matchAny :: C name => [String] -> name -> Bool
types and classes
We need to distinguish between tag names and attribute names, because DOCTYPE as tag name must be written upper case, whereas as attribute name it may be written either way.