  <define name='svg.feConvolveMatrix.content'>
    <zeroOrMore>
      <choice>
        <ref name='animate'/>
        <ref name='set'/>
      </choice>
    </zeroOrMore>
  </define>

  <define name='feConvolveMatrix'>
    <element name='feConvolveMatrix'>
      <ref name='feConvolveMatrix.attr'/>
      <ref name='svg.feConvolveMatrix.content'/>
    </element>
  </define>

  <define name='feConvolveMatrix.attr' combine='interleave'>
    <ref name='svg.Core.attr'/>
    <ref name='svg.FilterColor.attr'/>
    <ref name='svg.FilterPrimitiveWithIn.attr'/>
    <attribute name='order'>
      <ref name='NumberOptionalNumber.datatype'/>
    </attribute>
    <attribute name='kernelMatrix'/>
    <optional>
      <attribute name='divisor'>
        <ref name='Number.datatype'/>
      </attribute>
    </optional>
    <optional>
      <attribute name='bias'>
        <ref name='Number.datatype'/>
      </attribute>
    </optional>
    <optional>
      <attribute name='targetX'>
        <ref name='Integer.datatype'/>
      </attribute>
    </optional>
    <optional>
      <attribute name='targetY'>
        <ref name='Integer.datatype'/>
      </attribute>
    </optional>
    <optional>
      <attribute name='edgeMode' a:defaultValue='duplicate'>
        <choice>
          <value>duplicate</value>
          <value>wrap</value>
          <value>none</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name='kernelUnitLength'>
        <ref name='NumberOptionalNumber.datatype'/>
      </attribute>
    </optional>
    <optional>
      <attribute name='preserveAlpha'>
        <ref name='Boolean.datatype'/>
      </attribute>
    </optional>
  </define>
