-- ------------------------------------------------------------

{- |
   Module     : Text.XML.HXT.DOM.XmlKeywords
   Copyright  : Copyright (C) 2005 Uwe Schmidt
   License    : MIT

   Maintainer : Uwe Schmidt (uwe@fh-wedel.de)
   Stability  : experimental
   Portability: portable

   Constants for XML keywords, for special attribute names
   and special attribute values

-}

-- ------------------------------------------------------------

module Text.XML.HXT.DOM.XmlKeywords
where

-- ------------------------------------------------------------
--
-- string constants for representing DTD keywords and attributes

t_xml,                          -- tag names
 t_root         :: String

a_accept_mimetypes,
 a_add_default_dtd,
 a_canonicalize,
 a_default,                     -- attribute names
 a_check_namespaces,
 a_contentLength,
 a_collect_errors,
 a_column,
 a_default_baseuri,
 a_do_not_canonicalize,
 a_do_not_check_namespaces,
 a_do_not_issue_errors,
 a_do_not_issue_warnings,
 a_do_not_preserve_comment,
 a_do_not_remove_whitespace,
 a_do_not_use_curl,
 a_do_not_validate,
 a_encoding,
 a_error,
 a_error_log,
 a_help,
 a_if_modified_since,
 a_ignore_encoding_errors,
 a_ignore_none_xml_contents,
 a_indent,
 a_issue_errors,
 a_issue_warnings,
 a_kind,
 a_line,
 a_mime_types,
 a_module,
 a_modifier,
 a_name,
 a_no_empty_elements,
 a_no_empty_elem_for,
 a_no_redirect,
 a_no_xml_pi,
 a_options_curl,
 a_output_encoding,
 a_output_file,
 a_output_xml,
 a_output_html,
 a_output_xhtml,
 a_parse_by_mimetype,
 a_parse_html,
 a_parse_xml,
 a_peref,
 a_preserve_comment,
 a_propagate_errors,
 a_proxy,
 a_remove_whitespace,
 a_redirect,
 a_show_haskell,
 a_show_tree,
 a_source,
 a_status,
 a_standalone,
 a_strict_input,
 a_tagsoup,
 a_text_mode,
 a_trace,
 a_type,
 a_use_curl,
 a_url,
 a_validate,
 a_value,
 a_verbose,
 a_version,
 a_xml,
 a_xmlns        :: String

v_0,                            -- attribute values
 v_1,
 v_2,
 v_yes,
 v_no,
 v_any,
 v_children,
 v_choice,
 v_empty,
 v_mixed,
 v_seq,
 v_null,
 v_option,
 v_pcdata,
 v_star,
 v_plus         :: String

k_any,                          -- DTD keywords
 k_cdata,
 k_empty,
 k_entity,
 k_entities,
 k_id,
 k_idref,
 k_idrefs,
 k_include,
 k_ignore,
 k_nmtoken,
 k_nmtokens,
 k_peref,
 k_public,
 k_system,
 k_enumeration,
 k_fixed,
 k_implied,
 k_ndata,
 k_notation,
 k_pcdata,
 k_required,
 k_default      :: String

-- ------------------------------------------------------------

t_xml           = "xml"
t_root          = "/"           -- name of root node tag

a_accept_mimetypes              = "accept-mimetypes"
a_add_default_dtd               = "add-default-dtd"
a_canonicalize                  = "canonicalize"
a_check_namespaces              = "check-namespaces"
a_collect_errors                = "collect-errors"
a_column                        = "column"
a_contentLength                 = "Content-Length"
a_default                       = "default"
a_default_baseuri               = "default-base-URI"
a_do_not_canonicalize           = "do-not-canonicalize"
a_do_not_check_namespaces       = "do-not-check-namespaces"
a_do_not_issue_errors           = "do-not-issue-errors"
a_do_not_issue_warnings         = "do-not-issue-warnings"
a_do_not_preserve_comment       = "do-not-preserve-comment"
a_do_not_remove_whitespace      = "do-not-remove-whitespace"
a_do_not_use_curl               = "do-not-use-curl"
a_do_not_validate               = "do-not-validate"
a_encoding                      = "encoding"
a_error                         = "error"
a_error_log                     = "errorLog"
a_help                          = "help"
a_if_modified_since             = "if-modified-since"
a_ignore_encoding_errors        = "ignore-encoding-errors"
a_ignore_none_xml_contents      = "ignore-none-xml-contents"
a_indent                        = "indent"
a_issue_warnings                = "issue-warnings"
a_issue_errors                  = "issue-errors"
a_kind                          = "kind"
a_line                          = "line"
a_mime_types                    = "mimetypes"
a_module                        = "module"
a_modifier                      = "modifier"
a_name                          = "name"
a_no_empty_elements             = "no-empty-elements"
a_no_empty_elem_for             = "no-empty-elem-for"
a_no_redirect                   = "no-redirect"
a_no_xml_pi                     = "no-xml-pi"
a_options_curl                  = "options-curl"
a_output_file                   = "output-file"
a_output_encoding               = "output-encoding"
a_output_html                   = "output-html"
a_output_xhtml                  = "output-xhtml"
a_output_xml                    = "output-xml"
a_parse_by_mimetype             = "parse-by-mimetype"
a_parse_html                    = "parse-html"
a_parse_xml                     = "parse-xml"
a_peref                         = k_peref
a_preserve_comment              = "preserve-comment"
a_propagate_errors              = "propagate-errors"
a_proxy                         = "proxy"
a_redirect                      = "redirect"
a_remove_whitespace             = "remove-whitespace"
a_show_haskell                  = "show-haskell"
a_show_tree                     = "show-tree"
a_source                        = "source"
a_standalone                    = "standalone"
a_status                        = "status"
a_strict_input                  = "strict-input"
a_tagsoup                       = "tagsoup"
a_text_mode                     = "text-mode"
a_trace                         = "trace"
a_type                          = "type"
a_url                           = "url"
a_use_curl                      = "use-curl"
a_validate                      = "validate"
a_value                         = "value"
a_verbose                       = "verbose"
a_version                       = "version"
a_xml                           = "xml"
a_xmlns                         = "xmlns"

v_yes           = "yes"
v_no            = "no"
v_0             = "0"
v_1             = "1"
v_2             = "2"

v_any           = k_any
v_children      = "children"
v_choice        = "choice"
v_empty         = k_empty
v_pcdata        = k_pcdata
v_mixed         = "mixed"
v_seq           = "seq"

v_null          = ""
v_option        = "?"
v_star          = "*"
v_plus          = "+"

k_any           = "ANY"
k_cdata         = "CDATA"
k_empty         = "EMPTY"
k_entity        = "ENTITY"
k_entities      = "ENTITIES"
k_id            = "ID"
k_idref         = "IDREF"
k_idrefs        = "IDREFS"
k_include       = "INCLUDE"
k_ignore        = "IGNORE"
k_nmtoken       = "NMTOKEN"
k_nmtokens      = "NMTOKENS"
k_peref         = "PERef"
k_public        = "PUBLIC"
k_system        = "SYSTEM"

k_enumeration   = "#ENUMERATION"
k_fixed         = "#FIXED"
k_implied       = "#IMPLIED"
k_ndata         = "NDATA"
k_notation      = "NOTATION"
k_pcdata        = "#PCDATA"
k_required      = "#REQUIRED"
k_default       = "#DEFAULT"


dtdPrefix       :: String
dtdPrefix       = "doctype-"

-- ------------------------------------------------------------
--

-- attribute names for transfer protocol attributes
-- used in XmlInput for describing header information
-- of http and other requests

transferPrefix
 , transferProtocol
 , transferMimeType
 , transferEncoding
 , transferURI
 , transferDefaultURI
 , transferStatus
 , transferMessage
 , transferVersion :: String

transferPrefix          = "transfer-"

transferProtocol        = transferPrefix ++ "Protocol"
transferVersion         = transferPrefix ++ "Version"
transferMimeType        = transferPrefix ++ "MimeType"
transferEncoding        = transferPrefix ++ "Encoding"
transferDefaultURI      = transferPrefix ++ "DefaultURI"
transferStatus          = transferPrefix ++ "Status"
transferMessage         = transferPrefix ++ "Message"
transferURI             = transferPrefix ++ "URI"

-- ------------------------------------------------------------
--

httpPrefix      :: String
httpPrefix      = "http-"

stringProtocol  :: String
stringProtocol  = "string:"

-- ------------------------------------------------------------
--
-- encoding names

isoLatin1
  , iso8859_1, iso8859_2, iso8859_3, iso8859_4, iso8859_5
  , iso8859_6, iso8859_7, iso8859_8, iso8859_9, iso8859_10
  , iso8859_11, iso8859_13, iso8859_14, iso8859_15, iso8859_16
  , usAscii, ucs2, utf8, utf16, utf16be, utf16le, unicodeString :: String

isoLatin1       = iso8859_1
iso8859_1       = "ISO-8859-1"
iso8859_2       = "ISO-8859-2"
iso8859_3       = "ISO-8859-3"
iso8859_4       = "ISO-8859-4"
iso8859_5       = "ISO-8859-5"
iso8859_6       = "ISO-8859-6"
iso8859_7       = "ISO-8859-7"
iso8859_8       = "ISO-8859-8"
iso8859_9       = "ISO-8859-9"
iso8859_10      = "ISO-8859-10"
iso8859_11      = "ISO-8859-11"
iso8859_13      = "ISO-8859-13"
iso8859_14      = "ISO-8859-14"
iso8859_15      = "ISO-8859-15"
iso8859_16      = "ISO-8859-16"
usAscii         = "US-ASCII"
ucs2            = "ISO-10646-UCS-2"
utf8            = "UTF-8"
utf16           = "UTF-16"
utf16be         = "UTF-16BE"
utf16le         = "UTF-16LE"
unicodeString   = "UNICODE"

-- ------------------------------------------------------------
--
-- known namespaces

-- |
-- the predefined namespace uri for xml: \"http:\/\/www.w3.org\/XML\/1998\/namespace\"

xmlNamespace    :: String
xmlNamespace    = "http://www.w3.org/XML/1998/namespace"

-- |
-- the predefined namespace uri for xmlns: \"http:\/\/www.w3.org\/2000\/xmlns\/\"

xmlnsNamespace  :: String
xmlnsNamespace  = "http://www.w3.org/2000/xmlns/"

-- | Relax NG namespace
relaxNamespace  :: String
relaxNamespace  = "http://relaxng.org/ns/structure/1.0"

-- ------------------------------------------------------------
-- option for Relax NG

a_relax_schema,
 a_do_not_check_restrictions,
 a_check_restrictions,
 a_do_not_validate_externalRef,
 a_validate_externalRef,
 a_do_not_validate_include,
 a_validate_include,
 a_output_changes,
 a_do_not_collect_errors :: String

a_relax_schema                = "relax-schema"
a_do_not_check_restrictions   = "do-not-check-restrictions"
a_check_restrictions          = "check-restrictions"
a_do_not_validate_externalRef = "do-not-validate-externalRef"
a_validate_externalRef        = "validate-externalRef"
a_do_not_validate_include     = "do-not-validate-include"
a_validate_include            = "validate-include"
a_output_changes              = "output-pattern-transformations"
a_do_not_collect_errors       = "do-not-collect-errors"

-- ------------------------------------------------------------