Order of precedence of filters

Signature and transmission filters are applied with an order of precedence. This prevents potential filter conflicts, in which one filter might stipulate that you omit an item while another filter might stipulate that you keep an item.

When using signatures, note that the mimedata option is always omitted in the following scenarios, regardless of the signature filters in use:

Filters are applied in the following order:

Table 1. order_of_precedence_for_filters parameters
Filter Behavior If keep flag is used Behavior If omit flag is used Usage details
1. Filter namespaces, based on transmitnamespaces or signnamespaces setting. Keeps only elements and attributes in the namespaces indicated; throws others out. Omits only elements and attributes in the namespaces indicated; throws them out. An element is kept if any of its children are kept, even if it is in the wrong namespace.
2. Filter types of items, based on transmititems or signitems setting. Keeps only those types indicated; throws others out, including their options. Omits only those types indicated; throws them out, including their options.  
3. Filter types of options based on transmitoptions and signoptions setting. In the items that remain, keeps all option types indicated; throws others out. In the items that remain, omits all option types indicated.  
4. Filter specific pages based on transmitpagerefs or signpagerefs settings. Keeps the pages whose tags are specified. Settings in transmitnamespaces, transmititems, and transmitoptions are respected. Omits the pages whose tags are specified. Overrides settings in transmitnamespaces, transmititems, and transmitoptions. The page does not entirely disappear from the source code; the page tags still exist.
5. Filter groups of items based on transmitdatagroups and transmitgroups, or signdatagroups and signgroups settings. Keeps those items whose tags are specified, even if the items are of a type that should not be kept according to a transmitnamespaces or transmititems setting. Omits those items whose tags are specified, even if the items are of a type that should be kept according to a transmitnamespaces or transmititems setting. This option's settings override those in transmitpagerefs and signpagerefs.
6. Filter specific items based on transmititemrefs or signitemrefs settings. Keeps the items whose tags are specified; overrides previous settings if necessary. Settings in transmitoptions and signoptions are respected. Omits the items specified; overrides the previous settings if necessary. This option's settings override those in transmitnamespaces, transmititems, transmitgroups, transmitpagerefs and transmitdatagroups or signitems, signgroups, signpagerefs and signdatagroups.
7. Filter specific options based on transmitoptionrefs and signoptionrefs settings. Regardless of all other previous settings, keeps the specific option instances referred to; does not keep any other options; in the case of items that will be omitted except for a single option, the item will be kept, with its original sid, and only the one option. Omits the options specified; overrides the previous settings if necessary. This option's settings override all other filters, including transmitnamespaces, transmititems, transmitdatagroups, transmitgroups, transmititemrefs, transmitpagerefs, transmitoptions or signitems, signdatagroups, signgroups, signitemrefs, signpagerefs, and signoptions.
8. Filter based on signinstance settings. Regardless of all other settings, keeps the data elements indicated. Regardless of all other settings, omits the data elements indicated. This option's settings override all other filters.

Example

This example uses the transmit-family of options. The order of precedence would be the same for the sign-family of options.

   <page sid="Page1">
      <global sid="global"></global>
      <button sid="submitButton">
         <value>Filter Submission</value>
         <type>done</type>
         <url>http://www.server.dmn/cgi-bin/processForm</url>
         <transmitnamespaces>
            <filter>omit</filter>
            <uri>http://www.ibm.com/xmlns/prod/XFDL/Custom</uri>
         </transmitnamespaces>
         <transmititems>
            <filter>omit</filter>
            <itemtype>data</itemtype>
         </transmititems>
         <transmitdatagroups>
            <filter>keep</filter>
            <datagroupref>enclosures</datagroupref>
            <datagroupref>related</datagroupref>
         </transmitdatagroups>
         <transmititemrefs>
            <filter>omit</filter>
            <itemref>Page1.data2</itemref>
         </transmititemrefs>
         <transmitoptions>
            <filter>omit</filter>
            <optiontype>filename</optiontype>
         </transmitoptions>
      </button>
      <button sid="encloseButton">
         <image>encloseImageData</image>
         <type>enclose</type>
         <datagroup>
            <datagroupref>enclosures</datagroupref>
            <datagroupref>related</datagroupref>
         </datagroup>
      </button>
      <data sid="data1">
         <custom:id>324</custom:id>
         <datagroup>
            <datagroupref>enclosures</datagroupref>
         </datagroup>
         <filename>jobdescr.frm</filename>
         <mimedata encoding="base64-gzip">dfksdfsdfhsdhs</mimedata>
      </data>
      <data sid="data2">
         <datagroup>
            <datagroupref>related</datagroupref>
         </datagroup>
         <filename>resume.doc</filename>
         <mimedata encoding="base64-gzip">dfhsjdfsjhfjs</mimedata>
      </data>
      <data sid="encloseImageData">
         <filename>c:\images\enclose.jpg</filename>
         <mimedata encoding="base64-gzip">
            aswWWW8MjfbyhsUELKKEFir8dfdUUUmnskshie3mkjkkeiIIUIUOl
            fRlgdsoepgejgjj1sd/3/6nnII/fjkess9Wfgjgkggkllgakkk2kl
         </mimedata>
      </data>
   </page>

As a result of the filtering, the following would happen (see result form description under):

The form description that would be received once filtering was applied would look like this:

   <page sid="page1">
      <global sid="global"></global>
      <button sid="submitButton">
         <value>Filter Submission</value>
         <type>done</type>
         <url>http://www.server.dmn/cgi-bin/processForm</url>
         <transmitnamespaces>
            <filter>omit</filter>
            <uri>http://www.ibm.com/xmlns/prod/XFDL/Custom</uri>
         </transmitnamespaces>
         <transmititems>
            <filter>omit</filter>
            <itemtype>data</itemtype>
         </transmititems>
         <transmitdatagroups>
            <filter>keep</filter>
            <datagroupref>enclosures</datagroupref>
            <datagroupref>related</datagroupref>
         </transmitdatagroups>
         <transmititemrefs>
            <filter>omit</filter>
            <itemref>page1.data2</itemref>
         </transmititemrefs>
         <transmitoptions>
            <filter>omit</filter>
            <optiontype>filename</optiontype>
         </transmitoptions>
      </button>
      <button sid="encloseButton">
         <image>encloseImageData</image>
         <type>enclose</type>
         <datagroup>
            <datagroupref>enclosures</datagroupref>
            <datagroupref>related</datagroupref>
         </datagroup>
      </button>
      <data sid="data1">
         <datagroup>
            <datagroupref>enclosures</datagroupref>
         </datagroup>
         <mimedata encoding="base64-gzip">dfksdfsdfhsdhs</mimedata>
      </data>
   </page>