code: def create_rule(self, title, symbolizer=None, MinScaleDenominator=None, MaxScaleDenominator=None):
          
          elem = self._node.makeelement('{%s}Rule' % SLDNode._nsmap['sld'], nsmap=SLDNode._nsmap)
          self._node.append(elem)
  
          rule = Rule(self, len(self._node) - 1)
          rule.Title = title
  
          if MinScaleDenominator is not None:
              rule.MinScaleDenominator = MinScaleDenominator
          if MaxScaleDenominator is not None:
              rule.MaxScaleDenominator = MaxScaleDenominator
  
          if symbolizer is None:
              symbolizer = PointSymbolizer
  
          sym = symbolizer(rule)
          if symbolizer == PointSymbolizer:
              gph = Graphic(sym)
              mrk = Mark(gph)
              mrk.WellKnownName = 'square'
              fill = Fill(mrk)
              fill.create_cssparameter('fill', '#ff0000')
  
          elif symbolizer == LineSymbolizer:
              stroke = Stroke(sym)
              stroke.create_cssparameter('stroke', '#0000ff')
  
          elif symbolizer == PolygonSymbolizer:
              fill = Fill(sym)
              fill.create_cssparameter('fill', '#AAAAAA')
              stroke = Stroke(sym)
              stroke.create_cssparameter('stroke', '#000000')
              stroke.create_cssparameter('stroke-width', '1')
  
          return rule
docs: Create a L{Rule} object on this style. A rule requires a title and
          symbolizer. If no symbolizer is specified, a PointSymbolizer will be
          assigned to the rule.
  
          @type       title: string
          @param      title: The name of the new L{Rule}.
          @type  symbolizer: L{Symbolizer} I{class}
          @param symbolizer: The symbolizer type. This is the class object (as
              opposed to a class instance) of the symbolizer to use.
          @rtype: L{Rule}
          @return: A newly created rule, attached to this FeatureTypeStyle.