A rule set has the following basic structure:

    <rule ...> ... </rule>
    <rule ...> ... </rule>
    <ruleset src=...> ... </ruleset>
    <sortbyvalue ...>
  <site type=...>

The only SGML tags allowed in a rule set are the following:

No other SGML constructs are allowed, except for comments. Comments may occur anywhere, except within tags themselves.

A rule set contains one <ruleset> tag. The <ruleset> tag must have at least one and at most five child tags: one of <accepts>, <rejects>, or <includes> tags must be present. The <sortby> and <site> tags are optional. Multiple <accepts>, <rejects>, <includes>, <sortby>, and <site> tags are not allowed.

The <accepts> and <rejects> tags must contain one or more <rule> tags. A <rule> tag must include an op (operation) attribute and one or more <valueof> tags. You can create complex rules by nesting multiple rule tags within a <rule> tag.

You can also create complex rules by incorporating other rule sets with the <includes> tag. An <includes> tag contains references to other rule sets to be included in the rule set. It must have at least one child; each child must be a <ruleset> tag with a src attribute. See Including Rule Sets, Rules, and Sorting Directives for details. The <ruleset> tag may also contain a <sortby> tag, which in turn may contain one or more <sortbyvalue> tags to establish sorting directives. The <ruleset> tag may also include a <site> tag, which specifies the Web site to use as a filter (applies to multisite ATG environments).