It seems that values entered in Filter expressions in SLD rules which use the logical operator OR are not used properly in some cases. I noticed this when combining numeric and string values. I.e.
(QUALI is a text field from a shapefile)
1 - This will work:
<Filter>
<PropertyIsEqualTo>
<PropertyName>QUALI</PropertyName>
<Literal>24</Literal>
</PropertyIsEqualTo>
</Filter>
2 - This will also work:
<Filter>
<PropertyIsEqualTo>
<PropertyName>QUALI</PropertyName>
<Literal>24a</Literal>
</PropertyIsEqualTo>
</Filter>
3 - But this will fail:
<Filter>
<OR>
<PropertyIsEqualTo>
<PropertyName>QUALI</PropertyName>
<Literal>24</Literal>
</PropertyIsEqualTo>
<PropertyIsEqualTo>
<PropertyName>QUALI</PropertyName>
<Literal>24a</Literal>
</PropertyIsEqualTo>
</OR>
</Filter>
4 - Althought this will work:
<Filter>
<OR>
<PropertyIsEqualTo>
<PropertyName>QUALI</PropertyName>
<Literal>11x</Literal>
</PropertyIsEqualTo>
<PropertyIsEqualTo>
<PropertyName>QUALI</PropertyName>
<Literal>24a</Literal>
</PropertyIsEqualTo>
</OR>
</Filter>