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

    {- |
       Module     : Text.XML.HXT.RelaxNG.BasicArrows
       Copyright  : Copyright (C) 2011 Uwe Schmidt
       License    : MIT

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

       Constants and basic arrows for Relax NG

    -}

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

    module Text.XML.HXT.RelaxNG.BasicArrows
    where

    import Control.Arrow.ListArrows

    import Text.XML.HXT.DOM.Interface
    import Text.XML.HXT.Arrow.XmlArrow

    import Text.XML.HXT.RelaxNG.DataTypes
        ( a_relaxSimplificationChanges
        , defineOrigName
        , contextBaseAttr
        )

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

    hasRngAttName           :: ArrowXml a => String -> a XmlTree XmlTree
    hasRngAttName :: String -> a XmlTree XmlTree
    hasRngAttName s :: String
    s
        = a XmlTree XmlTree
    forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
    isAttr
          a XmlTree XmlTree -> a XmlTree XmlTree -> a XmlTree XmlTree
    forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
    Category cat =>
    cat a b -> cat b c -> cat a c
    >>>
          String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasLocalPart String
    s
          a XmlTree XmlTree -> a XmlTree XmlTree -> a XmlTree XmlTree
    forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
    Category cat =>
    cat a b -> cat b c -> cat a c
    >>>
          String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasNamespaceUri ""

    hasRngElemName          :: ArrowXml a => String -> a XmlTree XmlTree
    hasRngElemName :: String -> a XmlTree XmlTree
    hasRngElemName s :: String
    s
        = a XmlTree XmlTree
    forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree
    isElem
          a XmlTree XmlTree -> a XmlTree XmlTree -> a XmlTree XmlTree
    forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
    Category cat =>
    cat a b -> cat b c -> cat a c
    >>>
          String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasLocalPart String
    s
          a XmlTree XmlTree -> a XmlTree XmlTree -> a XmlTree XmlTree
    forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
    Category cat =>
    cat a b -> cat b c -> cat a c
    >>>
          String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasNamespaceUri String
    relaxNamespace

    checkRngName :: ArrowXml a => [String] -> a XmlTree XmlTree
    checkRngName :: [String] -> a XmlTree XmlTree
    checkRngName l :: [String]
    l
        = [a XmlTree XmlTree] -> a XmlTree XmlTree
    forall (a :: * -> * -> *) b c. ArrowList a => [a b c] -> a b c
    catA ((String -> a XmlTree XmlTree) -> [String] -> [a XmlTree XmlTree]
    forall a b. (a -> b) -> [a] -> [b]
    map String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName [String]
    l)
          a XmlTree XmlTree -> a XmlTree XmlTree -> a XmlTree XmlTree
    forall (a :: * -> * -> *) b c d.
    ArrowIf a =>
    a b c -> a b d -> a b d
    `guards`
          a XmlTree XmlTree
    forall (a :: * -> * -> *) b. ArrowList a => a b b
    this

    noOfChildren    :: ArrowXml a => (Int -> Bool) -> a XmlTree XmlTree
    noOfChildren :: (Int -> Bool) -> a XmlTree XmlTree
    noOfChildren p :: Int -> Bool
    p
        = a XmlTree XmlTree
    forall (a :: * -> * -> *) (t :: * -> *) b.
    (ArrowTree a, Tree t) =>
    a (t b) (t b)
    getChildren
          a XmlTree XmlTree -> ([XmlTree] -> [XmlTree]) -> a XmlTree XmlTree
    forall (a :: * -> * -> *) b c d.
    ArrowList a =>
    a b c -> ([c] -> [d]) -> a b d
    >>.
          (\ l :: [XmlTree]
    l -> if Int -> Bool
    p ([XmlTree] -> Int
    forall (t :: * -> *) a. Foldable t => t a -> Int
    length [XmlTree]
    l) then [XmlTree]
    l else [])

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

    isAttributeRef  :: ArrowXml a => a XmlTree XmlTree
    isAttributeRef :: a XmlTree XmlTree
    isAttributeRef
        = [String] -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    [String] -> a XmlTree XmlTree
    checkRngName ["attribute", "ref"]

    isAttributeRefTextListGroupInterleaveOneOrMoreEmpty     :: ArrowXml a => a XmlTree XmlTree
    isAttributeRefTextListGroupInterleaveOneOrMoreEmpty :: a XmlTree XmlTree
    isAttributeRefTextListGroupInterleaveOneOrMoreEmpty
        = [String] -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    [String] -> a XmlTree XmlTree
    checkRngName ["attribute", "ref", "text", "list", "group", "interleave", "oneOrMore", "empty"]

    isAttributeRefTextListInterleave        :: ArrowXml a => a XmlTree XmlTree
    isAttributeRefTextListInterleave :: a XmlTree XmlTree
    isAttributeRefTextListInterleave
        = [String] -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    [String] -> a XmlTree XmlTree
    checkRngName ["attribute", "ref", "text", "list", "interleave"]

    isAttributeListGroupInterleaveOneOrMore :: ArrowXml a => a XmlTree XmlTree
    isAttributeListGroupInterleaveOneOrMore :: a XmlTree XmlTree
    isAttributeListGroupInterleaveOneOrMore
        = [String] -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    [String] -> a XmlTree XmlTree
    checkRngName ["attribute", "list", "group", "interleave", "oneOrMore"]

    isExternalRefInclude    :: ArrowXml a => a XmlTree XmlTree
    isExternalRefInclude :: a XmlTree XmlTree
    isExternalRefInclude
        = [String] -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    [String] -> a XmlTree XmlTree
    checkRngName ["externalRef", "include"]

    isNameNsNameValue       :: ArrowXml a => a XmlTree XmlTree
    isNameNsNameValue :: a XmlTree XmlTree
    isNameNsNameValue
        = [String] -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    [String] -> a XmlTree XmlTree
    checkRngName ["name", "nsName", "value"]

    isNameNsName    :: ArrowXml a => a XmlTree XmlTree
    isNameNsName :: a XmlTree XmlTree
    isNameNsName
        = [String] -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    [String] -> a XmlTree XmlTree
    checkRngName ["name", "nsName"]

    isNameAnyNameNsName     :: ArrowXml a => a XmlTree XmlTree
    isNameAnyNameNsName :: a XmlTree XmlTree
    isNameAnyNameNsName
        = [String] -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    [String] -> a XmlTree XmlTree
    checkRngName ["name", "anyName", "nsName"]

    isDefineOneOrMoreZeroOrMoreOptionalListMixed    :: ArrowXml a => a XmlTree XmlTree
    isDefineOneOrMoreZeroOrMoreOptionalListMixed :: a XmlTree XmlTree
    isDefineOneOrMoreZeroOrMoreOptionalListMixed
        = [String] -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    [String] -> a XmlTree XmlTree
    checkRngName ["define", "oneOrMore", "zeroOrMore", "optional", "list", "mixed"]

    isChoiceGroupInterleave :: ArrowXml a => a XmlTree XmlTree
    isChoiceGroupInterleave :: a XmlTree XmlTree
    isChoiceGroupInterleave
        = [String] -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    [String] -> a XmlTree XmlTree
    checkRngName ["choice", "group", "interleave"]

    isChoiceGroupInterleaveOneOrMore        :: ArrowXml a => a XmlTree XmlTree
    isChoiceGroupInterleaveOneOrMore :: a XmlTree XmlTree
    isChoiceGroupInterleaveOneOrMore
        = [String] -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    [String] -> a XmlTree XmlTree
    checkRngName ["choice", "group", "interleave", "oneOrMore"]

    isGroupInterleave       :: ArrowXml a => a XmlTree XmlTree
    isGroupInterleave :: a XmlTree XmlTree
    isGroupInterleave
        = [String] -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    [String] -> a XmlTree XmlTree
    checkRngName ["group", "interleave"]

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

    isRngAnyName            :: ArrowXml a => a XmlTree XmlTree
    isRngAnyName :: a XmlTree XmlTree
    isRngAnyName            = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "anyName"

    isRngAttribute          :: ArrowXml a => a XmlTree XmlTree
    isRngAttribute :: a XmlTree XmlTree
    isRngAttribute          = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "attribute"

    isRngChoice             :: ArrowXml a => a XmlTree XmlTree
    isRngChoice :: a XmlTree XmlTree
    isRngChoice             = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "choice"

    isRngCombine            :: ArrowXml a => a XmlTree XmlTree
    isRngCombine :: a XmlTree XmlTree
    isRngCombine            = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "combine"

    isRngData               :: ArrowXml a => a XmlTree XmlTree
    isRngData :: a XmlTree XmlTree
    isRngData               = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "data"

    isRngDefine             :: ArrowXml a => a XmlTree XmlTree
    isRngDefine :: a XmlTree XmlTree
    isRngDefine             = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "define"

    isRngDiv                :: ArrowXml a => a XmlTree XmlTree
    isRngDiv :: a XmlTree XmlTree
    isRngDiv                = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "div"

    isRngElement            :: ArrowXml a => a XmlTree XmlTree
    isRngElement :: a XmlTree XmlTree
    isRngElement            = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "element"

    isRngEmpty              :: ArrowXml a => a XmlTree XmlTree
    isRngEmpty :: a XmlTree XmlTree
    isRngEmpty              = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "empty"

    isRngExcept             :: ArrowXml a => a XmlTree XmlTree
    isRngExcept :: a XmlTree XmlTree
    isRngExcept             = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "except"

    isRngExternalRef        :: ArrowXml a => a XmlTree XmlTree
    isRngExternalRef :: a XmlTree XmlTree
    isRngExternalRef        = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "externalRef"

    isRngGrammar            :: ArrowXml a => a XmlTree XmlTree
    isRngGrammar :: a XmlTree XmlTree
    isRngGrammar            = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "grammar"

    isRngGroup              :: ArrowXml a => a XmlTree XmlTree
    isRngGroup :: a XmlTree XmlTree
    isRngGroup              = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "group"

    isRngInclude            :: ArrowXml a => a XmlTree XmlTree
    isRngInclude :: a XmlTree XmlTree
    isRngInclude            = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "include"

    isRngInterleave         :: ArrowXml a => a XmlTree XmlTree
    isRngInterleave :: a XmlTree XmlTree
    isRngInterleave         = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "interleave"

    isRngList               :: ArrowXml a => a XmlTree XmlTree
    isRngList :: a XmlTree XmlTree
    isRngList               = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "list"

    isRngMixed              :: ArrowXml a => a XmlTree XmlTree
    isRngMixed :: a XmlTree XmlTree
    isRngMixed              = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "mixed"

    isRngName               :: ArrowXml a => a XmlTree XmlTree
    isRngName :: a XmlTree XmlTree
    isRngName               = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "name"

    isRngNotAllowed         :: ArrowXml a => a XmlTree XmlTree
    isRngNotAllowed :: a XmlTree XmlTree
    isRngNotAllowed         = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "notAllowed"

    isRngNsName             :: ArrowXml a => a XmlTree XmlTree
    isRngNsName :: a XmlTree XmlTree
    isRngNsName             = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "nsName"

    isRngOneOrMore          :: ArrowXml a => a XmlTree XmlTree
    isRngOneOrMore :: a XmlTree XmlTree
    isRngOneOrMore          = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "oneOrMore"

    isRngOptional           :: ArrowXml a => a XmlTree XmlTree
    isRngOptional :: a XmlTree XmlTree
    isRngOptional           = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "optional"

    isRngParam              :: ArrowXml a => a XmlTree XmlTree
    isRngParam :: a XmlTree XmlTree
    isRngParam              = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "param"

    isRngParentRef          :: ArrowXml a => a XmlTree XmlTree
    isRngParentRef :: a XmlTree XmlTree
    isRngParentRef          = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "parentRef"

    isRngRef                :: ArrowXml a => a XmlTree XmlTree
    isRngRef :: a XmlTree XmlTree
    isRngRef                = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "ref"

    isRngRelaxError         :: ArrowXml a => a XmlTree XmlTree
    isRngRelaxError :: a XmlTree XmlTree
    isRngRelaxError         = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "relaxError"

    isRngStart              :: ArrowXml a => a XmlTree XmlTree
    isRngStart :: a XmlTree XmlTree
    isRngStart              = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "start"

    isRngText               :: ArrowXml a => a XmlTree XmlTree
    isRngText :: a XmlTree XmlTree
    isRngText               = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "text"

    isRngType               :: ArrowXml a => a XmlTree XmlTree
    isRngType :: a XmlTree XmlTree
    isRngType               = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "type"

    isRngValue              :: ArrowXml a => a XmlTree XmlTree
    isRngValue :: a XmlTree XmlTree
    isRngValue              = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "value"

    isRngZeroOrMore         :: ArrowXml a => a XmlTree XmlTree
    isRngZeroOrMore :: a XmlTree XmlTree
    isRngZeroOrMore         = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngElemName "zeroOrMore"

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

    mkRngElement            :: ArrowXml a => String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngElement :: String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngElement n :: String
    n          = QName -> a n XmlTree -> a n XmlTree -> a n XmlTree
    forall (a :: * -> * -> *) n.
    ArrowXml a =>
    QName -> a n XmlTree -> a n XmlTree -> a n XmlTree
    mkElement (String -> String -> String -> QName
    mkQName "" String
    n String
    relaxNamespace)

    mkRngChoice             :: ArrowXml a => a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngChoice :: a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngChoice             = String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    forall (a :: * -> * -> *) n.
    ArrowXml a =>
    String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngElement "choice"

    mkRngDefine             :: ArrowXml a => a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngDefine :: a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngDefine             = String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    forall (a :: * -> * -> *) n.
    ArrowXml a =>
    String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngElement "define"

    mkRngEmpty              :: ArrowXml a => a n XmlTree -> a n XmlTree
    mkRngEmpty :: a n XmlTree -> a n XmlTree
    mkRngEmpty a :: a n XmlTree
    a            = String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    forall (a :: * -> * -> *) n.
    ArrowXml a =>
    String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngElement "empty" a n XmlTree
    a a n XmlTree
    forall (a :: * -> * -> *) b c. ArrowList a => a b c
    none

    mkRngGrammar            :: ArrowXml a => a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngGrammar :: a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngGrammar            = String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    forall (a :: * -> * -> *) n.
    ArrowXml a =>
    String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngElement "grammar"

    mkRngGroup              :: ArrowXml a => a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngGroup :: a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngGroup              = String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    forall (a :: * -> * -> *) n.
    ArrowXml a =>
    String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngElement "group"

    mkRngInterleave         :: ArrowXml a => a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngInterleave :: a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngInterleave         = String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    forall (a :: * -> * -> *) n.
    ArrowXml a =>
    String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngElement "interleave"

    mkRngName               :: ArrowXml a => a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngName :: a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngName               = String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    forall (a :: * -> * -> *) n.
    ArrowXml a =>
    String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngElement "name"

    mkRngNotAllowed         :: ArrowXml a => a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngNotAllowed :: a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngNotAllowed         = String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    forall (a :: * -> * -> *) n.
    ArrowXml a =>
    String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngElement "notAllowed"

    mkRngOneOrMore          :: ArrowXml a => a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngOneOrMore :: a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngOneOrMore          = String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    forall (a :: * -> * -> *) n.
    ArrowXml a =>
    String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngElement "oneOrMore"

    mkRngRef                :: ArrowXml a => a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngRef :: a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngRef                = String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    forall (a :: * -> * -> *) n.
    ArrowXml a =>
    String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngElement "ref"

    mkRngRelaxError         :: ArrowXml a => a n XmlTree
    mkRngRelaxError :: a n XmlTree
    mkRngRelaxError         = String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    forall (a :: * -> * -> *) n.
    ArrowXml a =>
    String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngElement "relaxError" a n XmlTree
    forall (a :: * -> * -> *) b c. ArrowList a => a b c
    none a n XmlTree
    forall (a :: * -> * -> *) b c. ArrowList a => a b c
    none

    mkRngStart              :: ArrowXml a => a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngStart :: a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngStart              = String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    forall (a :: * -> * -> *) n.
    ArrowXml a =>
    String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngElement "start"

    mkRngText               :: ArrowXml a => a n XmlTree -> a n XmlTree
    mkRngText :: a n XmlTree -> a n XmlTree
    mkRngText a :: a n XmlTree
    a             = String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    forall (a :: * -> * -> *) n.
    ArrowXml a =>
    String -> a n XmlTree -> a n XmlTree -> a n XmlTree
    mkRngElement "text" a n XmlTree
    a a n XmlTree
    forall (a :: * -> * -> *) b c. ArrowList a => a b c
    none

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

    setRngName              :: ArrowXml a => String -> a XmlTree XmlTree
    setRngName :: String -> a XmlTree XmlTree
    setRngName n :: String
    n            = QName -> a XmlTree XmlTree
    forall (a :: * -> * -> *). ArrowXml a => QName -> a XmlTree XmlTree
    setElemName (String -> String -> String -> QName
    mkQName "" String
    n String
    relaxNamespace)

    setRngNameDiv           :: ArrowXml a => a XmlTree XmlTree
    setRngNameDiv :: a XmlTree XmlTree
    setRngNameDiv           = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    setRngName "div"

    setRngNameRef           :: ArrowXml a => a XmlTree XmlTree
    setRngNameRef :: a XmlTree XmlTree
    setRngNameRef           = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    setRngName "ref"

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

    -- Attributes

    isRngAttrAttribute              :: ArrowXml a => a XmlTree XmlTree
    isRngAttrAttribute :: a XmlTree XmlTree
    isRngAttrAttribute              = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngAttName "attribute"

    isRngAttrCombine                :: ArrowXml a => a XmlTree XmlTree
    isRngAttrCombine :: a XmlTree XmlTree
    isRngAttrCombine                = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngAttName "combine"

    isRngAttrDatatypeLibrary        :: ArrowXml a => a XmlTree XmlTree
    isRngAttrDatatypeLibrary :: a XmlTree XmlTree
    isRngAttrDatatypeLibrary        = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngAttName "datatypeLibrary"

    isRngAttrHref                   :: ArrowXml a => a XmlTree XmlTree
    isRngAttrHref :: a XmlTree XmlTree
    isRngAttrHref                   = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngAttName "href"

    isRngAttrName                   :: ArrowXml a => a XmlTree XmlTree
    isRngAttrName :: a XmlTree XmlTree
    isRngAttrName                   = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngAttName "name"

    isRngAttrNs                     :: ArrowXml a => a XmlTree XmlTree
    isRngAttrNs :: a XmlTree XmlTree
    isRngAttrNs                     = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngAttName "ns"

    isRngAttrType                   :: ArrowXml a => a XmlTree XmlTree
    isRngAttrType :: a XmlTree XmlTree
    isRngAttrType                   = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngAttName "type"

    isRngAttrRelaxSimplificationChanges     :: ArrowXml a => a XmlTree XmlTree
    isRngAttrRelaxSimplificationChanges :: a XmlTree XmlTree
    isRngAttrRelaxSimplificationChanges     = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasRngAttName String
    a_relaxSimplificationChanges

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

    mkRngAttr                       :: ArrowXml a => String -> a b String -> a b XmlTree
    mkRngAttr :: String -> a b String -> a b XmlTree
    mkRngAttr name :: String
    name value :: a b String
    value            = QName -> a b XmlTree -> a b XmlTree
    forall (a :: * -> * -> *) n.
    ArrowXml a =>
    QName -> a n XmlTree -> a n XmlTree
    mkAttr (String -> QName
    mkName String
    name) (a b String
    value a b String -> a String XmlTree -> a b XmlTree
    forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
    Category cat =>
    cat a b -> cat b c -> cat a c
    >>> a String XmlTree
    forall (a :: * -> * -> *). ArrowXml a => a String XmlTree
    mkText)

    mkRngAttrName                   :: ArrowXml a => String -> a b XmlTree
    mkRngAttrName :: String -> a b XmlTree
    mkRngAttrName value :: String
    value             = String -> a b String -> a b XmlTree
    forall (a :: * -> * -> *) b.
    ArrowXml a =>
    String -> a b String -> a b XmlTree
    mkRngAttr "name" (String -> a b String
    forall (a :: * -> * -> *) c b. ArrowList a => c -> a b c
    constA String
    value)

    mkRngAttrRelaxSimplificationChanges     :: ArrowXml a => String -> a b XmlTree
    mkRngAttrRelaxSimplificationChanges :: String -> a b XmlTree
    mkRngAttrRelaxSimplificationChanges value :: String
    value
                                    = String -> a b String -> a b XmlTree
    forall (a :: * -> * -> *) b.
    ArrowXml a =>
    String -> a b String -> a b XmlTree
    mkRngAttr String
    a_relaxSimplificationChanges (String -> a b String
    forall (a :: * -> * -> *) c b. ArrowList a => c -> a b c
    constA String
    value)

    mkRngAttrDefineOrigName         :: ArrowXml a => String -> a b XmlTree
    mkRngAttrDefineOrigName :: String -> a b XmlTree
    mkRngAttrDefineOrigName value :: String
    value   = String -> a b String -> a b XmlTree
    forall (a :: * -> * -> *) b.
    ArrowXml a =>
    String -> a b String -> a b XmlTree
    mkRngAttr String
    defineOrigName (String -> a b String
    forall (a :: * -> * -> *) c b. ArrowList a => c -> a b c
    constA String
    value)

    mkRngAttrContextBase            :: ArrowXml a => a b String -> a b XmlTree
    mkRngAttrContextBase :: a b String -> a b XmlTree
    mkRngAttrContextBase            = String -> a b String -> a b XmlTree
    forall (a :: * -> * -> *) b.
    ArrowXml a =>
    String -> a b String -> a b XmlTree
    mkRngAttr String
    contextBaseAttr

    addRngAttrName                  :: ArrowXml a => String -> a XmlTree XmlTree
    addRngAttrName :: String -> a XmlTree XmlTree
    addRngAttrName value :: String
    value            = String -> String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> String -> a XmlTree XmlTree
    addAttr "name" String
    value

    addRngAttrDescr                 :: ArrowXml a => String -> a XmlTree XmlTree
    addRngAttrDescr :: String -> a XmlTree XmlTree
    addRngAttrDescr                 = String -> String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> String -> a XmlTree XmlTree
    addAttr "descr"

    addRngAttrChanges               :: ArrowXml a => String -> a XmlTree XmlTree
    addRngAttrChanges :: String -> a XmlTree XmlTree
    addRngAttrChanges               = String -> String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> String -> a XmlTree XmlTree
    addAttr "changes"

    addRngAttrNs                    :: ArrowXml a => String -> a XmlTree XmlTree
    addRngAttrNs :: String -> a XmlTree XmlTree
    addRngAttrNs                    = String -> String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> String -> a XmlTree XmlTree
    addAttr "ns"

    rmRngAttrNs                     :: ArrowXml a => a XmlTree XmlTree
    rmRngAttrNs :: a XmlTree XmlTree
    rmRngAttrNs                     = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    removeAttr "ns"

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

    hasRngAttrRelaxSimplificationChanges             :: ArrowXml a => a XmlTree XmlTree
    hasRngAttrRelaxSimplificationChanges :: a XmlTree XmlTree
    hasRngAttrRelaxSimplificationChanges             = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasAttr String
    a_relaxSimplificationChanges

    hasRngAttrAttribute             :: ArrowXml a => a XmlTree XmlTree
    hasRngAttrAttribute :: a XmlTree XmlTree
    hasRngAttrAttribute             = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasAttr "attribute"

    hasRngAttrCombine               :: ArrowXml a => a XmlTree XmlTree
    hasRngAttrCombine :: a XmlTree XmlTree
    hasRngAttrCombine               = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasAttr "combine"

    hasRngAttrDatatypeLibrary       :: ArrowXml a => a XmlTree XmlTree
    hasRngAttrDatatypeLibrary :: a XmlTree XmlTree
    hasRngAttrDatatypeLibrary       = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasAttr "datatypeLibrary"

    hasRngAttrHref                  :: ArrowXml a => a XmlTree XmlTree
    hasRngAttrHref :: a XmlTree XmlTree
    hasRngAttrHref                  = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasAttr "href"

    hasRngAttrName                  :: ArrowXml a => a XmlTree XmlTree
    hasRngAttrName :: a XmlTree XmlTree
    hasRngAttrName                  = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasAttr "name"

    hasRngAttrNs                    :: ArrowXml a => a XmlTree XmlTree
    hasRngAttrNs :: a XmlTree XmlTree
    hasRngAttrNs                    = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasAttr "ns"

    hasRngAttrType                  :: ArrowXml a => a XmlTree XmlTree
    hasRngAttrType :: a XmlTree XmlTree
    hasRngAttrType                  = String -> a XmlTree XmlTree
    forall (a :: * -> * -> *).
    ArrowXml a =>
    String -> a XmlTree XmlTree
    hasAttr "type"

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

    getRngAttrAttribute             :: ArrowXml a => a XmlTree String
    getRngAttrAttribute :: a XmlTree String
    getRngAttrAttribute             = String -> a XmlTree String
    forall (a :: * -> * -> *). ArrowXml a => String -> a XmlTree String
    getAttrValue "attribute"

    getRngAttrCombine               :: ArrowXml a => a XmlTree String
    getRngAttrCombine :: a XmlTree String
    getRngAttrCombine               = String -> a XmlTree String
    forall (a :: * -> * -> *). ArrowXml a => String -> a XmlTree String
    getAttrValue "combine"

    getRngAttrDatatypeLibrary       :: ArrowXml a => a XmlTree String
    getRngAttrDatatypeLibrary :: a XmlTree String
    getRngAttrDatatypeLibrary       = String -> a XmlTree String
    forall (a :: * -> * -> *). ArrowXml a => String -> a XmlTree String
    getAttrValue "datatypeLibrary"

    getRngAttrDescr                 :: ArrowXml a => a XmlTree String
    getRngAttrDescr :: a XmlTree String
    getRngAttrDescr                 = String -> a XmlTree String
    forall (a :: * -> * -> *). ArrowXml a => String -> a XmlTree String
    getAttrValue "descr"

    getRngAttrHref                  :: ArrowXml a => a XmlTree String
    getRngAttrHref :: a XmlTree String
    getRngAttrHref                  = String -> a XmlTree String
    forall (a :: * -> * -> *). ArrowXml a => String -> a XmlTree String
    getAttrValue "href"

    getRngAttrName                  :: ArrowXml a => a XmlTree String
    getRngAttrName :: a XmlTree String
    getRngAttrName                  = String -> a XmlTree String
    forall (a :: * -> * -> *). ArrowXml a => String -> a XmlTree String
    getAttrValue "name"

    getRngAttrNs                    :: ArrowXml a => a XmlTree String
    getRngAttrNs :: a XmlTree String
    getRngAttrNs                    = String -> a XmlTree String
    forall (a :: * -> * -> *). ArrowXml a => String -> a XmlTree String
    getAttrValue "ns"

    getRngAttrType                  :: ArrowXml a => a XmlTree String
    getRngAttrType :: a XmlTree String
    getRngAttrType                  = String -> a XmlTree String
    forall (a :: * -> * -> *). ArrowXml a => String -> a XmlTree String
    getAttrValue "type"

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