[Geoserver-users] Trouble with dynamically generated SLD

Hello,

I’m attempting to generate an SLD file in python.
And while the output appears valid to me when I load it in as a new style in Geoserver and click “Validate” I get an error:

line 17: cvc-complex-type.2.4.a: Invalid content was found starting with element ‘ogc:Filter’. One of ‘{“http://www.opengis.net/sld”:Symbolizer}’ is expected.

​I’m assuming this occurs 18 times–once for each filter.
The filter tag is correctly nested within the rule tag alongside a symbolizer, so I don’t see what the issue is here.
Here’s the full SLD:

<sld:StyledLayerDescriptor xmlns:ogc="[http://www.opengis.net/ogc](http://www.opengis.net/ogc)" xmlns:sld="[http://www.opengis.net/sld](http://www.opengis.net/sld)" xmlns:xlink="[http://www.w3.org/1999/xlink](http://www.w3.org/1999/xlink)" xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance](http://www.w3.org/2001/XMLSchema-instance)" version="1.0.0">
  <sld:NamedLayer>
    <sld:Name>my style</sld:Name>
    <sld:UserStyle>
      <sld:FeatureTypeStyle>
        <sld:Rule>
          <sld:Title>White Pine Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#f490bd</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>White Pine</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Oak Land Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#dfb1f9</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Oak Land</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Mixed White Pine and Red Pine Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#7a40bc</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Mixed White Pine and Red Pine</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>River Bottom Forest Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#6ef46e</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>River Bottom Forest</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Lakes (open water) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#65d14d</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Lakes (open water)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Big Woods - Hardwoods (oak, maple, basswood, hickory) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#5ff47f</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Big Woods - Hardwoods (oak, maple, basswood, hickory)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Wet Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#c746f2</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Wet Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#e552cd</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Undefined Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#c933f7</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Undefined</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Birch (trending to Conifers) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ef7cf9</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Birch (trending to Conifers)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Jack Pine Barrens and Openings Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ff5ebe</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Jack Pine Barrens and Openings</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Mixed Hardwood and Pine (Maple, White Pine, Basswood, etc) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#66dd9b</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Mixed Hardwood and Pine (Maple, White Pine, Basswood, etc)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Birch (trending to hardwoods) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#882dd8</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Birch (trending to hardwoods)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Brush Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#8effb2</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Brush Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Pine Flats (Hemlock, Spruce, Fir, White Pine, Aspen) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#119e9e</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Pine Flats (Hemlock, Spruce, Fir, White Pine, Aspen)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Conifer Bogs and Swamps Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ed3723</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Conifer Bogs and Swamps</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Open Muskeg Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#541184</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Open Muskeg</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Oak openings and barrens Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#e83c33</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Oak openings and barrens</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
      </sld:FeatureTypeStyle>
    </sld:UserStyle>
  </sld:NamedLayer>
</sld:StyledLayerDescriptor>

​Thanks for any help you can provide.​

···

Kris Johnson

Natural Resources Research Institute
5013 Miller Trunk Highway, Duluth, MN 55811
p: 218.788.2767
www.nrri.umn.edu

As the error message suggests your filter is in the wrong place. It should be at the top of the rule.

Ian

On Fri, 11 May 2018, 18:48 Kris Johnson, <kristofj@anonymised.com> wrote:

Hello,

I’m attempting to generate an SLD file in python.
And while the output appears valid to me when I load it in as a new style in Geoserver and click “Validate” I get an error:

line 17: cvc-complex-type.2.4.a: Invalid content was found starting with element ‘ogc:Filter’. One of ‘{“http://www.opengis.net/sld”:Symbolizer}’ is expected.

​I’m assuming this occurs 18 times–once for each filter.
The filter tag is correctly nested within the rule tag alongside a symbolizer, so I don’t see what the issue is here.
Here’s the full SLD:

<sld:StyledLayerDescriptor xmlns:ogc="[http://www.opengis.net/ogc](http://www.opengis.net/ogc)" xmlns:sld="[http://www.opengis.net/sld](http://www.opengis.net/sld)" xmlns:xlink="[http://www.w3.org/1999/xlink](http://www.w3.org/1999/xlink)" xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance](http://www.w3.org/2001/XMLSchema-instance)" version="1.0.0">
  <sld:NamedLayer>
    <sld:Name>my style</sld:Name>
    <sld:UserStyle>
      <sld:FeatureTypeStyle>
        <sld:Rule>
          <sld:Title>White Pine Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#f490bd</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>White Pine</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Oak Land Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#dfb1f9</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Oak Land</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Mixed White Pine and Red Pine Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#7a40bc</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Mixed White Pine and Red Pine</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>River Bottom Forest Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#6ef46e</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>River Bottom Forest</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Lakes (open water) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#65d14d</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Lakes (open water)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Big Woods - Hardwoods (oak, maple, basswood, hickory) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#5ff47f</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Big Woods - Hardwoods (oak, maple, basswood, hickory)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Wet Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#c746f2</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Wet Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#e552cd</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Undefined Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#c933f7</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Undefined</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Birch (trending to Conifers) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ef7cf9</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Birch (trending to Conifers)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Jack Pine Barrens and Openings Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ff5ebe</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Jack Pine Barrens and Openings</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Mixed Hardwood and Pine (Maple, White Pine, Basswood, etc) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#66dd9b</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Mixed Hardwood and Pine (Maple, White Pine, Basswood, etc)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Birch (trending to hardwoods) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#882dd8</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Birch (trending to hardwoods)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Brush Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#8effb2</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Brush Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Pine Flats (Hemlock, Spruce, Fir, White Pine, Aspen) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#119e9e</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Pine Flats (Hemlock, Spruce, Fir, White Pine, Aspen)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Conifer Bogs and Swamps Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ed3723</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Conifer Bogs and Swamps</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Open Muskeg Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#541184</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Open Muskeg</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Oak openings and barrens Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#e83c33</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Oak openings and barrens</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
      </sld:FeatureTypeStyle>
    </sld:UserStyle>
  </sld:NamedLayer>
</sld:StyledLayerDescriptor>

​Thanks for any help you can provide.​

Kris Johnson

Natural Resources Research Institute
5013 Miller Trunk Highway, Duluth, MN 55811
p: 218.788.2767
www.nrri.umn.edu


Check out the vibrant tech community on one of the world’s most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this list:

If you want to request a feature or an improvement, also see this: https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer

Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Hi Ian,

Thanks for the response.
Your answer is what I was afraid of.
It’s a bit frustrating because I couldn’t find any mention of this order enforcement for rules in the official OGC specification.
But, more to the point, the python library I’m using (https://github.com/azavea/python-sld) doesn’t seem capable of enforcing this.

Do you have any suggestions for dynamically creating SLDs (for ingestion into Geoserver via REST calls) using python?

···

On Fri, May 11, 2018 at 1:46 PM, Ian Turton <ijturton@anonymised.com> wrote:

As the error message suggests your filter is in the wrong place. It should be at the top of the rule.

Ian

On Fri, 11 May 2018, 18:48 Kris Johnson, <kristofj@anonymised.com> wrote:

Hello,

I’m attempting to generate an SLD file in python.
And while the output appears valid to me when I load it in as a new style in Geoserver and click “Validate” I get an error:

line 17: cvc-complex-type.2.4.a: Invalid content was found starting with element ‘ogc:Filter’. One of ‘{“http://www.opengis.net/sld”:Symbolizer}’ is expected.

​I’m assuming this occurs 18 times–once for each filter.
The filter tag is correctly nested within the rule tag alongside a symbolizer, so I don’t see what the issue is here.
Here’s the full SLD:

<sld:StyledLayerDescriptor xmlns:ogc="[http://www.opengis.net/ogc](http://www.opengis.net/ogc)" xmlns:sld="[http://www.opengis.net/sld](http://www.opengis.net/sld)" xmlns:xlink="[http://www.w3.org/1999/xlink](http://www.w3.org/1999/xlink)" xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance](http://www.w3.org/2001/XMLSchema-instance)" version="1.0.0">
  <sld:NamedLayer>
    <sld:Name>my style</sld:Name>
    <sld:UserStyle>
      <sld:FeatureTypeStyle>
        <sld:Rule>
          <sld:Title>White Pine Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#f490bd</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>White Pine</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Oak Land Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#dfb1f9</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Oak Land</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Mixed White Pine and Red Pine Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#7a40bc</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Mixed White Pine and Red Pine</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>River Bottom Forest Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#6ef46e</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>River Bottom Forest</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Lakes (open water) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#65d14d</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Lakes (open water)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Big Woods - Hardwoods (oak, maple, basswood, hickory) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#5ff47f</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Big Woods - Hardwoods (oak, maple, basswood, hickory)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Wet Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#c746f2</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Wet Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#e552cd</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Undefined Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#c933f7</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Undefined</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Birch (trending to Conifers) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ef7cf9</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Birch (trending to Conifers)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Jack Pine Barrens and Openings Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ff5ebe</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Jack Pine Barrens and Openings</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Mixed Hardwood and Pine (Maple, White Pine, Basswood, etc) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#66dd9b</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Mixed Hardwood and Pine (Maple, White Pine, Basswood, etc)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Birch (trending to hardwoods) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#882dd8</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Birch (trending to hardwoods)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Brush Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#8effb2</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Brush Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Pine Flats (Hemlock, Spruce, Fir, White Pine, Aspen) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#119e9e</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Pine Flats (Hemlock, Spruce, Fir, White Pine, Aspen)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Conifer Bogs and Swamps Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ed3723</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Conifer Bogs and Swamps</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Open Muskeg Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#541184</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Open Muskeg</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Oak openings and barrens Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#e83c33</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Oak openings and barrens</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
      </sld:FeatureTypeStyle>
    </sld:UserStyle>
  </sld:NamedLayer>
</sld:StyledLayerDescriptor>

​Thanks for any help you can provide.​

Kris Johnson

Natural Resources Research Institute
5013 Miller Trunk Highway, Duluth, MN 55811
p: 218.788.2767
www.nrri.umn.edu


Check out the vibrant tech community on one of the world’s most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this list:

If you want to request a feature or an improvement, also see this: https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer

Geoserver-users@anonymised.comsourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Kris Johnson

Natural Resources Research Institute
5013 Miller Trunk Highway, Duluth, MN 55811
p: 218.788.2767
www.nrri.umn.edu

The ordering is specified in the XML schema snippet on Page 25 of my copy of the spec:

<xs:element name=“Rule”>
xs:complexType
xs:sequence
<xs:element ref=“sld:Name” minOccurs=“0”/>
<xs:element ref=“sld:Title” minOccurs=“0”/>
<xs:element ref=“sld:Abstract” minOccurs=“0”/>
<xs:element ref=“sld:LegendGraphic” minOccurs=“0”/>
<xs:choice minOccurs=“0”>
<xs:element ref=“ogc:Filter”/>
<xs:element ref=“sld:ElseFilter”/>
</xs:choice>
<xs:element ref=“sld:MinScaleDenominator” minOccurs=“0”/>
<xs:element ref=“sld:MaxScaleDenominator” minOccurs=“0”/>
<xs:choice minOccurs=“0” maxOccurs=“unbounded”>
<xs:element ref=“sld:LineSymbolizer”/>
<xs:element ref=“sld:PolygonSymbolizer”/>
<xs:element ref=“sld:PointSymbolizer”/>
<xs:element ref=“sld:TextSymbolizer”/>
<xs:element ref=“sld:RasterSymbolizer”/>
</xs:choice>
</xs:sequence>

Rules contain a Sequence (or ordered list) with ogc:Filter above line symbolizer.

It looks like a call to normalize on the rule should fix the order. Otherwise you can look to fix the python.

The second easiest way is to ignore the validator (GeoServer is relaxed about the SLD it will ingest) and proceed.

Ian

···

On Fri, May 11, 2018 at 1:46 PM, Ian Turton <ijturton@anonymised.com> wrote:

As the error message suggests your filter is in the wrong place. It should be at the top of the rule.

Ian

On Fri, 11 May 2018, 18:48 Kris Johnson, <kristofj@anonymised.com> wrote:

Hello,

I’m attempting to generate an SLD file in python.
And while the output appears valid to me when I load it in as a new style in Geoserver and click “Validate” I get an error:

line 17: cvc-complex-type.2.4.a: Invalid content was found starting with element ‘ogc:Filter’. One of ‘{“http://www.opengis.net/sld”:Symbolizer}’ is expected.

​I’m assuming this occurs 18 times–once for each filter.
The filter tag is correctly nested within the rule tag alongside a symbolizer, so I don’t see what the issue is here.
Here’s the full SLD:

<sld:StyledLayerDescriptor xmlns:ogc="[http://www.opengis.net/ogc](http://www.opengis.net/ogc)" xmlns:sld="[http://www.opengis.net/sld](http://www.opengis.net/sld)" xmlns:xlink="[http://www.w3.org/1999/xlink](http://www.w3.org/1999/xlink)" xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance](http://www.w3.org/2001/XMLSchema-instance)" version="1.0.0">
  <sld:NamedLayer>
    <sld:Name>my style</sld:Name>
    <sld:UserStyle>
      <sld:FeatureTypeStyle>
        <sld:Rule>
          <sld:Title>White Pine Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#f490bd</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>White Pine</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Oak Land Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#dfb1f9</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Oak Land</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Mixed White Pine and Red Pine Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#7a40bc</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Mixed White Pine and Red Pine</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>River Bottom Forest Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#6ef46e</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>River Bottom Forest</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Lakes (open water) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#65d14d</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Lakes (open water)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Big Woods - Hardwoods (oak, maple, basswood, hickory) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#5ff47f</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Big Woods - Hardwoods (oak, maple, basswood, hickory)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Wet Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#c746f2</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Wet Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#e552cd</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Undefined Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#c933f7</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Undefined</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Birch (trending to Conifers) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ef7cf9</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Birch (trending to Conifers)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Jack Pine Barrens and Openings Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ff5ebe</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Jack Pine Barrens and Openings</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Mixed Hardwood and Pine (Maple, White Pine, Basswood, etc) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#66dd9b</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Mixed Hardwood and Pine (Maple, White Pine, Basswood, etc)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Birch (trending to hardwoods) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#882dd8</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Birch (trending to hardwoods)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Brush Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#8effb2</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Brush Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Pine Flats (Hemlock, Spruce, Fir, White Pine, Aspen) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#119e9e</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Pine Flats (Hemlock, Spruce, Fir, White Pine, Aspen)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Conifer Bogs and Swamps Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ed3723</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Conifer Bogs and Swamps</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Open Muskeg Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#541184</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Open Muskeg</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Oak openings and barrens Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#e83c33</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Oak openings and barrens</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
      </sld:FeatureTypeStyle>
    </sld:UserStyle>
  </sld:NamedLayer>
</sld:StyledLayerDescriptor>

​Thanks for any help you can provide.​

Kris Johnson

Natural Resources Research Institute
5013 Miller Trunk Highway, Duluth, MN 55811
p: 218.788.2767
www.nrri.umn.edu


Check out the vibrant tech community on one of the world’s most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this list:

If you want to request a feature or an improvement, also see this: https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer

Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Kris Johnson

Natural Resources Research Institute
5013 Miller Trunk Highway, Duluth, MN 55811
p: 218.788.2767
www.nrri.umn.edu

Ian Turton

Hi Ian,

Thank you for the explanation regarding xs:sequence. I didn’t pick up on that while examining the spec.

I’ll see what I can do to get the python script to proceed the correct order.

Thanks again.

···

On Mon, May 14, 2018 at 9:29 AM, Ian Turton <ijturton@anonymised.com> wrote:

The ordering is specified in the XML schema snippet on Page 25 of my copy of the spec:

<xs:element name=“Rule”>
xs:complexType
xs:sequence
<xs:element ref=“sld:Name” minOccurs=“0”/>
<xs:element ref=“sld:Title” minOccurs=“0”/>
<xs:element ref=“sld:Abstract” minOccurs=“0”/>
<xs:element ref=“sld:LegendGraphic” minOccurs=“0”/>
<xs:choice minOccurs=“0”>
<xs:element ref=“ogc:Filter”/>
<xs:element ref=“sld:ElseFilter”/>
</xs:choice>
<xs:element ref=“sld:MinScaleDenominator” minOccurs=“0”/>
<xs:element ref=“sld:MaxScaleDenominator” minOccurs=“0”/>
<xs:choice minOccurs=“0” maxOccurs=“unbounded”>
<xs:element ref=“sld:LineSymbolizer”/>
<xs:element ref=“sld:PolygonSymbolizer”/>
<xs:element ref=“sld:PointSymbolizer”/>
<xs:element ref=“sld:TextSymbolizer”/>
<xs:element ref=“sld:RasterSymbolizer”/>
</xs:choice>
</xs:sequence>

Rules contain a Sequence (or ordered list) with ogc:Filter above line symbolizer.

It looks like a call to normalize on the rule should fix the order. Otherwise you can look to fix the python.

The second easiest way is to ignore the validator (GeoServer is relaxed about the SLD it will ingest) and proceed.

Ian

On Mon, 14 May 2018 at 15:18, Kris Johnson <kristofj@anonymised.com> wrote:

Hi Ian,

Thanks for the response.
Your answer is what I was afraid of.
It’s a bit frustrating because I couldn’t find any mention of this order enforcement for rules in the official OGC specification.
But, more to the point, the python library I’m using (https://github.com/azavea/python-sld) doesn’t seem capable of enforcing this.

Do you have any suggestions for dynamically creating SLDs (for ingestion into Geoserver via REST calls) using python?

Ian Turton

On Fri, May 11, 2018 at 1:46 PM, Ian Turton <ijturton@anonymised.com> wrote:

As the error message suggests your filter is in the wrong place. It should be at the top of the rule.

Ian

On Fri, 11 May 2018, 18:48 Kris Johnson, <kristofj@anonymised.com…> wrote:

Hello,

I’m attempting to generate an SLD file in python.
And while the output appears valid to me when I load it in as a new style in Geoserver and click “Validate” I get an error:

line 17: cvc-complex-type.2.4.a: Invalid content was found starting with element ‘ogc:Filter’. One of ‘{“http://www.opengis.net/sld”:Symbolizer}’ is expected.

​I’m assuming this occurs 18 times–once for each filter.
The filter tag is correctly nested within the rule tag alongside a symbolizer, so I don’t see what the issue is here.
Here’s the full SLD:

<sld:StyledLayerDescriptor xmlns:ogc="[http://www.opengis.net/ogc](http://www.opengis.net/ogc)" xmlns:sld="[http://www.opengis.net/sld](http://www.opengis.net/sld)" xmlns:xlink="[http://www.w3.org/1999/xlink](http://www.w3.org/1999/xlink)" xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance](http://www.w3.org/2001/XMLSchema-instance)" version="1.0.0">
  <sld:NamedLayer>
    <sld:Name>my style</sld:Name>
    <sld:UserStyle>
      <sld:FeatureTypeStyle>
        <sld:Rule>
          <sld:Title>White Pine Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#f490bd</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>White Pine</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Oak Land Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#dfb1f9</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Oak Land</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Mixed White Pine and Red Pine Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#7a40bc</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Mixed White Pine and Red Pine</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>River Bottom Forest Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#6ef46e</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>River Bottom Forest</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Lakes (open water) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#65d14d</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Lakes (open water)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Big Woods - Hardwoods (oak, maple, basswood, hickory) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#5ff47f</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Big Woods - Hardwoods (oak, maple, basswood, hickory)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Wet Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#c746f2</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Wet Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#e552cd</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Undefined Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#c933f7</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Undefined</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Birch (trending to Conifers) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ef7cf9</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Birch (trending to Conifers)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Jack Pine Barrens and Openings Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ff5ebe</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Jack Pine Barrens and Openings</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Mixed Hardwood and Pine (Maple, White Pine, Basswood, etc) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#66dd9b</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Mixed Hardwood and Pine (Maple, White Pine, Basswood, etc)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Birch (trending to hardwoods) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#882dd8</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Birch (trending to hardwoods)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Brush Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#8effb2</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Brush Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Pine Flats (Hemlock, Spruce, Fir, White Pine, Aspen) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#119e9e</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Pine Flats (Hemlock, Spruce, Fir, White Pine, Aspen)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Conifer Bogs and Swamps Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ed3723</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Conifer Bogs and Swamps</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Open Muskeg Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#541184</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Open Muskeg</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Oak openings and barrens Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#e83c33</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Oak openings and barrens</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
      </sld:FeatureTypeStyle>
    </sld:UserStyle>
  </sld:NamedLayer>
</sld:StyledLayerDescriptor>

​Thanks for any help you can provide.​

Kris Johnson

Natural Resources Research Institute
5013 Miller Trunk Highway, Duluth, MN 55811
p: 218.788.2767
www.nrri.umn.edu


Check out the vibrant tech community on one of the world’s most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this list:

If you want to request a feature or an improvement, also see this: https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer

Geoserver-users@anonymised.comsourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Kris Johnson

Natural Resources Research Institute
5013 Miller Trunk Highway, Duluth, MN 55811
p: 218.788.2767
www.nrri.umn.edu

Kris Johnson

Natural Resources Research Institute
5013 Miller Trunk Highway, Duluth, MN 55811
p: 218.788.2767
www.nrri.umn.edu

You can also read the Geoserver SLD Reference docs, which describe the element ordering specified by the standard (and might be a bit easier to read).

···

On Mon, May 14, 2018 at 7:17 AM, Kris Johnson <kristofj@anonymised.com> wrote:

Hi Ian,

Thanks for the response.
Your answer is what I was afraid of.
It’s a bit frustrating because I couldn’t find any mention of this order enforcement for rules in the official OGC specification.
But, more to the point, the python library I’m using (https://github.com/azavea/python-sld) doesn’t seem capable of enforcing this.

Do you have any suggestions for dynamically creating SLDs (for ingestion into Geoserver via REST calls) using python?


Check out the vibrant tech community on one of the world’s most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot


Geoserver-users mailing list

Please make sure you read the following two resources before posting to this list:

If you want to request a feature or an improvement, also see this: https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer

Geoserver-users@anonymised.com.382…sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

On Fri, May 11, 2018 at 1:46 PM, Ian Turton <ijturton@anonymised.com> wrote:

As the error message suggests your filter is in the wrong place. It should be at the top of the rule.

Ian

On Fri, 11 May 2018, 18:48 Kris Johnson, <kristofj@anonymised.com> wrote:

Hello,

I’m attempting to generate an SLD file in python.
And while the output appears valid to me when I load it in as a new style in Geoserver and click “Validate” I get an error:

line 17: cvc-complex-type.2.4.a: Invalid content was found starting with element ‘ogc:Filter’. One of ‘{“http://www.opengis.net/sld”:Symbolizer}’ is expected.

​I’m assuming this occurs 18 times–once for each filter.
The filter tag is correctly nested within the rule tag alongside a symbolizer, so I don’t see what the issue is here.
Here’s the full SLD:

<sld:StyledLayerDescriptor xmlns:ogc="[http://www.opengis.net/ogc](http://www.opengis.net/ogc)" xmlns:sld="[http://www.opengis.net/sld](http://www.opengis.net/sld)" xmlns:xlink="[http://www.w3.org/1999/xlink](http://www.w3.org/1999/xlink)" xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance](http://www.w3.org/2001/XMLSchema-instance)" version="1.0.0">
  <sld:NamedLayer>
    <sld:Name>my style</sld:Name>
    <sld:UserStyle>
      <sld:FeatureTypeStyle>
        <sld:Rule>
          <sld:Title>White Pine Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#f490bd</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>White Pine</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Oak Land Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#dfb1f9</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Oak Land</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Mixed White Pine and Red Pine Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#7a40bc</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Mixed White Pine and Red Pine</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>River Bottom Forest Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#6ef46e</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>River Bottom Forest</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Lakes (open water) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#65d14d</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Lakes (open water)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Big Woods - Hardwoods (oak, maple, basswood, hickory) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#5ff47f</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Big Woods - Hardwoods (oak, maple, basswood, hickory)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Wet Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#c746f2</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Wet Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#e552cd</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Undefined Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#c933f7</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Undefined</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Birch (trending to Conifers) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ef7cf9</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Birch (trending to Conifers)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Jack Pine Barrens and Openings Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ff5ebe</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Jack Pine Barrens and Openings</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Mixed Hardwood and Pine (Maple, White Pine, Basswood, etc) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#66dd9b</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Mixed Hardwood and Pine (Maple, White Pine, Basswood, etc)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Aspen-Birch (trending to hardwoods) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#882dd8</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Aspen-Birch (trending to hardwoods)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Brush Prairie Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#8effb2</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Brush Prairie</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Pine Flats (Hemlock, Spruce, Fir, White Pine, Aspen) Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#119e9e</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Pine Flats (Hemlock, Spruce, Fir, White Pine, Aspen)</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Conifer Bogs and Swamps Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#ed3723</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Conifer Bogs and Swamps</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Open Muskeg Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#541184</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Open Muskeg</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
        <sld:Rule>
          <sld:Title>Oak openings and barrens Rule</sld:Title>
          <sld:PolygonSymbolizer>
            <sld:Fill>
              <sld:CssParameter name="fill">#e83c33</sld:CssParameter>
            </sld:Fill>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">1</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>xclass</ogc:PropertyName>
              <ogc:Literal>Oak openings and barrens</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
        </sld:Rule>
      </sld:FeatureTypeStyle>
    </sld:UserStyle>
  </sld:NamedLayer>
</sld:StyledLayerDescriptor>

​Thanks for any help you can provide.​

Kris Johnson

Natural Resources Research Institute
5013 Miller Trunk Highway, Duluth, MN 55811
p: 218.788.2767
www.nrri.umn.edu


Check out the vibrant tech community on one of the world’s most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this list:

If you want to request a feature or an improvement, also see this: https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer

Geoserver-users@anonymised.comrge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Kris Johnson

Natural Resources Research Institute
5013 Miller Trunk Highway, Duluth, MN 55811
p: 218.788.2767
www.nrri.umn.edu