  <define name='svg.feDiffuseLighting.content'>
    <choice>
      <ref name='feDistantLight'/>
      <ref name='fePointLight'/>
      <ref name='feSpotLight'/>
    </choice>
    <zeroOrMore>
      <choice>
        <ref name='animate'/>
        <ref name='set'/>
        <ref name='animateColor'/>
      </choice>
    </zeroOrMore>
  </define>

  <define name='feDiffuseLighting'>
    <element name='feDiffuseLighting'>
      <ref name='attlist.feDiffuseLighting'/>
      <ref name='svg.feDiffuseLighting.content'/>
    </element>
  </define>

  <define name='attlist.feDiffuseLighting' combine='interleave'>
    <ref name='svg.Core.attrib'/>
    <ref name='svg.Style.attrib'/>
    <ref name='svg.Color.attrib'/>
    <ref name='svg.FilterColor.attrib'/>
    <ref name='svg.FilterPrimitiveWithIn.attrib'/>
    <optional>
      <attribute name='lighting-color'>
        <ref name='SVGColor.datatype'/>
      </attribute>
    </optional>
    <optional>
      <attribute name='surfaceScale'>
        <ref name='Number.datatype'/>
      </attribute>
    </optional>
    <optional>
      <attribute name='diffuseConstant'>
        <ref name='Number.datatype'/>
      </attribute>
    </optional>
    <optional>
      <attribute name='kernelUnitLength'>
        <ref name='NumberOptionalNumber.datatype'/>
      </attribute>
    </optional>
  </define>
