| <grammar xmlns="http://relaxng.org/ns/structure/1.0" |
| ns="urn:intelliForm:AttachmentFilter" |
| datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" |
| > |
| <start> |
| <ref name="filter-definition" /> |
| </start> |
| |
| <define name="filter-definition"> |
| <element> |
| <nsName ns="urn:intelliForm:AttachmentFilter" /> |
| <ref name="toplevel-filter" /> |
| </element> |
| </define> |
| |
| <define name="toplevel-filter"> |
| <choice> |
| <element name="all"> |
| <empty /> |
| </element> |
| |
| <ref name="filter" /> |
| </choice> |
| </define> |
| |
| <define name="filter"> |
| <choice> |
| <ref name="and-filter" /> |
| <ref name="or-filter" /> |
| <ref name="not-filter" /> |
| |
| <element name="filter"> |
| <choice> |
| <ref name="implementation-filter" /> |
| <ref name="beanshell-filter" /> |
| </choice> |
| </element> |
| |
| <ref name="property-filter" /> |
| |
| <element name="group-filter"> |
| <attribute name="id" /> |
| </element> |
| |
| <element name="default-filter"> |
| <empty /> |
| </element> |
| |
| <ref name="size-filter" /> |
| </choice> |
| </define> |
| |
| <define name="size-filter"> |
| <element name="size-filter"> |
| <choice> |
| <group> |
| <ref name="min.attr" /> |
| <ref name="max.attr" /> |
| </group> |
| <ref name="min.attr" /> |
| <ref name="max.attr" /> |
| </choice> |
| |
| <optional> |
| <attribute name="unit"> |
| <choice> |
| <value>b</value> |
| <value>kb</value> |
| <value>mb</value> |
| </choice> |
| </attribute> |
| </optional> |
| </element> |
| </define> |
| |
| <define name="max.attr"> |
| <attribute name="max"> |
| <data type="decimal" /> |
| </attribute> |
| </define> |
| <define name="min.attr"> |
| <attribute name="min"> |
| <data type="decimal" /> |
| </attribute> |
| </define> |
| |
| <define name="property-filter"> |
| <element name="property-filter"> |
| <attribute name="name"> |
| <choice> |
| <value>id</value> |
| <value>name</value> |
| <value>content-type</value> |
| </choice> |
| </attribute> |
| |
| <choice> |
| <attribute name="value" /> |
| <element name="value"> |
| <text /> |
| </element> |
| </choice> |
| </element> |
| </define> |
| |
| <define name="beanshell-filter"> |
| <element name="expression"> |
| <text /> |
| </element> |
| </define> |
| |
| <define name="implementation-filter"> |
| <group> |
| <attribute name="implementation" /> |
| <ref name="any" /> |
| </group> |
| </define> |
| |
| <define name="not-filter"> |
| <element name="not"> |
| <ref name="filter" /> |
| </element> |
| </define> |
| |
| <define name="or-filter"> |
| <element name="or"> |
| <oneOrMore> |
| <ref name="filter" /> |
| </oneOrMore> |
| </element> |
| </define> |
| |
| <define name="and-filter"> |
| <element name="and"> |
| <oneOrMore> |
| <ref name="filter" /> |
| </oneOrMore> |
| </element> |
| </define> |
| |
| <define name="any"> |
| <zeroOrMore> |
| <element> |
| <anyName /> |
| <ref name="any" /> |
| </element> |
| </zeroOrMore> |
| </define> |
| </grammar> |