GeoServer SLD – How to Fix Problem with SLD on GeoServer

geoserversld

I can't find what is wrong. I try write an style on GeoServer.

This is not ok.:

    <FeatureTypeStyle>
                <FeatureTypeName>Odcinki</FeatureTypeName>
          <Rule>  
      <Name>Magistrala A</Name>
        <Title>&lt; 1700</Title>
  <MinScaleDenominator>1700</MinScaleDenominator>
  <MaxScaleDenominator>6771</MaxScaleDenominator>
     <ogc:Filter>**line.24**
        <ogc:PropertyIsEqualTo>
         <ogc:PropertyName>mpec_magis</ogc:PropertyName>
         <ogc:Literal>1</ogc:Literal>
        </ogc:PropertyIsEqualTo>
    </ogc:Filter>
        <LineSymbolizer>
        <Stroke>
          <CssParameter name="stroke">#009933</CssParameter>                   
          <CssParameter name="stroke-width">4</CssParameter>
        </Stroke>
        </LineSymbolizer>
  </Rule>
  <Rule>  <!-- thick line drawn first-->
    <MaxScaleDenominator>6771</MaxScaleDenominator>
            <ogc:Filter>**line.40**
        <ogc:PropertyIsEqualTo>
         <ogc:PropertyName>mpec_magis</ogc:PropertyName>
         <ogc:Literal>1</ogc:Literal>
        </ogc:PropertyIsEqualTo>
    </ogc:Filter>        
    <LineSymbolizer>
      <Stroke>
          <CssParameter name="stroke">#009933</CssParameter>                   
          <CssParameter name="stroke-width">2</CssParameter>
      </Stroke>
    </LineSymbolizer>
        </Rule>

I have got errors:

line 24: 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.

line 40: 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 don't understand what is wrong, beyond it is LineSymbolizer.

My previous wersion without ScaleDenominator is ok.:

    <FeatureTypeStyle>
 <Rule>
   <Name>Magistrala A</Name>
   <ogc:Filter>
     <ogc:PropertyIsEqualTo>
       <ogc:PropertyName>mpec_magis</ogc:PropertyName>
       <ogc:Literal>1</ogc:Literal>
     </ogc:PropertyIsEqualTo>
   </ogc:Filter>
   <LineSymbolizer>
     <Stroke>
       <CssParameter name="stroke">#009933</CssParameter>
       <CssParameter name="stroke-width">2</CssParameter>
     </Stroke>
   </LineSymbolizer>
 </Rule>

For any suggestions many thanks.
I greet

Best Answer

XML is ordered (at least in the SLD schema) so you must use the elements in the right order, what you should have written is:

 <ogc:Filter>**line.24**
    <ogc:PropertyIsEqualTo>
     <ogc:PropertyName>mpec_magis</ogc:PropertyName>
     <ogc:Literal>1</ogc:Literal>
    </ogc:PropertyIsEqualTo>
</ogc:Filter>
<MinScaleDenominator>1700</MinScaleDenominator>
<MaxScaleDenominator>6771</MaxScaleDenominator>
<LineSymbolizer>
Related Question