@@ -765,29 +765,23 @@ static char* msSLDGetCommonExpressionFromFilter(CPLXMLNode* psFilter,
765
765
}
766
766
767
767
/************************************************************************/
768
- /* msSLDParseNamedLayer */
768
+ /* msSLDParseUserStyle */
769
769
/* */
770
- /* Parse NamedLayer root. */
770
+ /* Parse UserStyle node. */
771
771
/************************************************************************/
772
- int msSLDParseNamedLayer (CPLXMLNode * psRoot , layerObj * psLayer )
773
- {
774
- CPLXMLNode * psFeatureTypeStyle , * psRule , * psUserStyle ;
775
- CPLXMLNode * psSLDName = NULL , * psNamedStyle = NULL ;
776
- CPLXMLNode * psElseFilter = NULL , * psFilter = NULL ;
777
- CPLXMLNode * psLayerFeatureConstraints = NULL ;
778
- int nNewClasses = 0 , nClassBeforeFilter = 0 , nClassAfterFilter = 0 ;
779
- int nClassAfterRule = 0 , nClassBeforeRule = 0 ;
780
772
781
- if (!psRoot || !psLayer )
782
- return MS_FAILURE ;
773
+ static void msSLDParseUserStyle (CPLXMLNode * psUserStyle , layerObj * psLayer )
774
+ {
775
+ CPLXMLNode * psFeatureTypeStyle ;
783
776
784
- psUserStyle = CPLGetXMLNode (psRoot , "UserStyle" );
785
- if (psUserStyle ) {
786
777
psFeatureTypeStyle = CPLGetXMLNode (psUserStyle , "FeatureTypeStyle" );
787
778
if (psFeatureTypeStyle ) {
788
779
while (psFeatureTypeStyle && psFeatureTypeStyle -> pszValue &&
789
780
strcasecmp (psFeatureTypeStyle -> pszValue ,
790
781
"FeatureTypeStyle" ) == 0 ) {
782
+
783
+ CPLXMLNode * psRule ;
784
+
791
785
if (!psFeatureTypeStyle -> pszValue ||
792
786
strcasecmp (psFeatureTypeStyle -> pszValue ,
793
787
"FeatureTypeStyle" ) != 0 ) {
@@ -800,6 +794,11 @@ int msSLDParseNamedLayer(CPLXMLNode *psRoot, layerObj *psLayer)
800
794
/* -------------------------------------------------------------------- */
801
795
psRule = CPLGetXMLNode (psFeatureTypeStyle , "Rule" );
802
796
while (psRule ) {
797
+ CPLXMLNode * psFilter = NULL ;
798
+ CPLXMLNode * psElseFilter = NULL ;
799
+ int nNewClasses = 0 , nClassBeforeFilter = 0 , nClassAfterFilter = 0 ;
800
+ int nClassAfterRule = 0 , nClassBeforeRule = 0 ;
801
+
803
802
if (!psRule -> pszValue ||
804
803
strcasecmp (psRule -> pszValue , "Rule" ) != 0 ) {
805
804
psRule = psRule -> psNext ;
@@ -858,6 +857,7 @@ int msSLDParseNamedLayer(CPLXMLNode *psRoot, layerObj *psLayer)
858
857
/* -------------------------------------------------------------------- */
859
858
psRule = CPLGetXMLNode (psFeatureTypeStyle , "Rule" );
860
859
while (psRule ) {
860
+ CPLXMLNode * psElseFilter ;
861
861
if (!psRule -> pszValue ||
862
862
strcasecmp (psRule -> pszValue , "Rule" ) != 0 ) {
863
863
psRule = psRule -> psNext ;
@@ -876,12 +876,30 @@ int msSLDParseNamedLayer(CPLXMLNode *psRoot, layerObj *psLayer)
876
876
psFeatureTypeStyle = psFeatureTypeStyle -> psNext ;
877
877
}
878
878
}
879
+ }
880
+
881
+ /************************************************************************/
882
+ /* msSLDParseNamedLayer */
883
+ /* */
884
+ /* Parse NamedLayer root. */
885
+ /************************************************************************/
886
+ int msSLDParseNamedLayer (CPLXMLNode * psRoot , layerObj * psLayer )
887
+ {
888
+ CPLXMLNode * psUserStyle ;
889
+ CPLXMLNode * psLayerFeatureConstraints = NULL ;
890
+
891
+ if (!psRoot || !psLayer )
892
+ return MS_FAILURE ;
893
+
894
+ psUserStyle = CPLGetXMLNode (psRoot , "UserStyle" );
895
+ if (psUserStyle ) {
896
+ msSLDParseUserStyle (psUserStyle , psLayer );
879
897
}
880
898
/* check for Named styles*/
881
899
else {
882
- psNamedStyle = CPLGetXMLNode (psRoot , "NamedStyle" );
900
+ CPLXMLNode * psNamedStyle = CPLGetXMLNode (psRoot , "NamedStyle" );
883
901
if (psNamedStyle ) {
884
- psSLDName = CPLGetXMLNode (psNamedStyle , "Name" );
902
+ CPLXMLNode * psSLDName = CPLGetXMLNode (psNamedStyle , "Name" );
885
903
if (psSLDName && psSLDName -> psChild && psSLDName -> psChild -> pszValue ) {
886
904
msFree (psLayer -> classgroup );
887
905
psLayer -> classgroup = msStrdup (psSLDName -> psChild -> pszValue );
@@ -907,6 +925,7 @@ int msSLDParseNamedLayer(CPLXMLNode *psRoot, layerObj *psLayer)
907
925
}
908
926
}
909
927
if ( psFeatureTypeConstraint != NULL ) {
928
+ CPLXMLNode * psFilter ;
910
929
if ( CPLGetXMLNode (psFeatureTypeConstraint , "FeatureTypeName" ) != NULL ) {
911
930
msSetError (MS_WMSERR , "FeatureTypeName element is not "
912
931
"supported in FeatureTypeConstraint" , "" );
0 commit comments