blob: 29274762953bc69f1951536a169b9260debc8dd2 [file] [log] [blame]
<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>