<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="billboards">
    <xs:annotation>
      <xs:documentation>
        The collection of billboard display and job characteristic definitions.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence maxOccurs="unbounded">
        <xs:element name="billboard">
          <xs:annotation>
            <xs:documentation>
              The information that defines the display and job characteristics of a single billboard.
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="id" type="xs:string">
                <xs:annotation>
                  <xs:documentation>
                    Defines the unique identifier for the billboard. The Rules Engine can optionally return
                    either a billboard id or a billboard category. To specify exactly which billboard to
                    be displayed a billboard ID would be returned from the rule evaluation.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="type" type="xs:string">
                <xs:annotation>
                  <xs:documentation>
                    Defines a means for classifying billboards.
                    Examples of billboard types are:<br></br>
                    "STANDARD", "INK_STATUS", "INK", "SPECIAL".<br></br><li>
                      INK_STATUS identifies billboards that are only shown when the ink status
                      link is clicked and are not added to the history.
                    </li><li>
                      INK identifies billboards that are shown for ink level warnings and are
                      not added to the history.
                    </li><li>
                      STANDARD are billboards that are displayed but not added to the history. An
                      example is the DEFAULT billboard.
                    </li><li>
                      SPECIAL is actually any billboard type other than the three previously discussed types.
                    </li><br>SPECIAL billboards are the only billboards added to the history.</br>
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="fileName" type="xs:string">
                <xs:annotation>
                  <xs:documentation>
                    Defines the filename for the XML that defines the billboard GUI.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <!--Optional-->
              <xs:element name="categories" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>
                    Optional field that defines the categories to which the billboard belongs.
                    For additional information see the documentation for a category element.
                    If this field is present, must have at least one category.
                  </xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <!--Must have atleast one category element-->
                  <xs:sequence minOccurs="1" maxOccurs="unbounded">
                    <xs:element name="category" type="xs:string">
                      <xs:annotation>
                        <xs:documentation>
                          Defines a category to which the billboard belongs. The Rules Engine can optionally
                          return a category or a billboard id. To allow any one of a group of billboards to be
                          displayed, a category would be returned as a result of a rule evaluation. The first
                          billboard in the category will be displayed if it is not already in the history. If the
                          first billboard is in the history, then the next billboard would be displayed, if not in
                          the history, and so on until all billboards in the category have been checked. If all are
                          in the history, the next rule is evaluated.
                        </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <!--Optional-->
              <xs:element name="actions" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>
                    Optional field that defines the parameters for actions associated
                    with the various links (buttons) on a billboard. GUI will indicate
                    via a callback which action is to be excuted, and the parameter for
                    that action. The action parameter is an index into this list of
                    actions. For additional information, refer to the documentation for
                    the action element.
                    If this field is present, must have at least one action.
                  </xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <!--Must have atleast one action element-->
                  <xs:sequence minOccurs="1" maxOccurs="unbounded">
                    <xs:element name="action" type="xs:string">
                      <xs:annotation>
                        <xs:documentation>
                          Defines the parameters for an action associated with a link (button) on a billboard.
                          This may be a URL or the parameters for launching an application (i.e. 4Runner).
                        </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="navigate" type="xs:string">
                <xs:annotation>
                  <xs:documentation>
                    Indicates whether or not the 'Prev' and 'Next' buttons should be enabled
                    on the billboard. The buttons will not be enabled unless there is a history
                    to be navigated. See the defintion of the 'type' element for determining which
                    billboards get added to the history.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <!--Optional-->
              <xs:element name="restoreGui" type="xs:string" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Optional field, defaults to "false" if not present.
                    Indicates whether or not this billboard requires that the Job Status Window
                    should be "restored" to normal size if it was minimized on the task bar.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <!--Optional-->
              <xs:element name="carts" type="xs:string" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Optional field. Indicates to which carts that an INK billboard applies.
                    The carts are indicated by number, separated by commas. (Example 1,2 indicates
                    that an INK billboard applies to both carts 1 and 2. This is to allow tracking
                    whether or not a job is displaying an ink billboard for a particular cart.
                    This field is required for INK billboards for proper job tracking.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>