{- |
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 some special names.
-}
module Text.XML.Basic.Tag (
   Name(..),
   doctype, doctypeString,
   cdata, cdataString,
   ) where

import Text.XML.Basic.Name as Name


newtype Name ident = Name {unname :: ident}
   deriving (Eq, Ord)

instance Show ident => Show (Name ident) where
   showsPrec p = showsPrec p . unname

instance Name.Tag ident => Name.C (Name ident) where
   fromString = Name . Name.tagFromString
   toString = Name.tagToString . unname




doctype :: (Name.Tag name) => Name name
doctype = Name.fromString doctypeString

cdata :: (Name.Tag name) => Name name
cdata = Name.fromString cdataString


doctypeString :: String
doctypeString = "DOCTYPE"

cdataString :: String
cdataString = "[CDATA["