We do not define a tag data type here, since this is too much bound to the particular use (e.g. list or tree structure). However we define a tag name and several
- newtype Name ident = Name {
- unname :: ident
- doctype :: Tag name => Name name
- doctypeString :: String
- cdata :: Tag name => Name name
- cdataString :: String
- isEmpty :: Tag name => Name name -> Bool
- isSloppy :: Tag name => Name name -> Bool
- isInnerOf :: Tag name => Name name -> Name name -> Bool
- closes :: Tag name => Name name -> Name name -> Bool