This is the schema for bot configuration files for Program D. Schematron validation The bots element contains all configuration information. A bot element describes how to configure a bot. A bot element should have either (1) an href attribute, or the (2) id and enabled attributes and element content, but not both. The page to use when talking to this bot via the servlet interface. A learn element specifies an AIML file, or a glob-style pattern indicating several AIML files, that should be loaded by the bot. A properties element lists bot properties to be intitialized at startup. A properties element should have an href attribute, or property element content, but not both. A property has a name and a value. A properties element gives information about predicates that may be used in the AIML. A predicates element should have an href attribute, or predicate element content, but not both. A predicate has a name, a default value, and a setting indicating whether a set element should return the predicate's name or its new value when setting it. A substitutions element lists different types of substitutions to be used. A substitutions element should have an href attribute, or a set of substitution elements (input, gender, person or person2), but not both. A substitution element set should have an href attribute, or substitute element content, but not both. A substitution has a find value, which should be a regular expression, and a replace value which is what to substitute for matches of the find value. A sentence-splitters element lists markers that should be used to split sentences. A sentence-splitters element should have an href attribute, or splitter element content, but not both. A splitter indicates a single value. A listeners element lists listener configurations. A listeners element should have an href attribute, or listener element content, but not both. A listener element contains parameter values for a listener. A testing element defines the testing configuration. A testing element should have an href attribute, or testing element content, but not both. A test-suite element gives the pathspec for one or more test suite files (use wildcards to indicate multiple files). A report-directory element gives the path to a directory where test reports should be stored.