Skip to content

Commit 6e4791f

Browse files
committed
[BUGFIX] WFS GetCapabilities respons misses <keywords> key
Fixes #13037 WFS GetCapabilities respons misses <keywords> key Replace KeywordList by Keywords in WFS Getcapabilities and keywords in WCS GetCapabilities.
1 parent 6abb99b commit 6e4791f

File tree

1 file changed

+30
-12
lines changed

1 file changed

+30
-12
lines changed

src/server/qgsserverprojectparser.cpp

+30-12
Original file line numberDiff line numberDiff line change
@@ -420,22 +420,40 @@ void QgsServerProjectParser::serviceCapabilities( QDomElement& parentElement, QD
420420
QDomElement keywordListElem = propertiesElement.firstChildElement( "WMSKeywordList" );
421421
if ( !keywordListElem.isNull() && !keywordListElem.text().isEmpty() )
422422
{
423-
QDomElement wmsKeywordElem = doc.createElement( "KeywordList" );
424-
QDomNodeList keywordList = keywordListElem.elementsByTagName( "value" );
425-
for ( int i = 0; i < keywordList.size(); ++i )
423+
if ( service.compare( "WMS", Qt::CaseInsensitive ) == 0 )
426424
{
427-
QDomElement keywordElem = doc.createElement( "Keyword" );
428-
QDomText keywordText = doc.createTextNode( keywordList.at( i ).toElement().text() );
429-
keywordElem.appendChild( keywordText );
430-
if ( sia2045 )
425+
QDomElement wmsKeywordElem = doc.createElement( "KeywordList" );
426+
QDomNodeList keywordList = keywordListElem.elementsByTagName( "value" );
427+
for ( int i = 0; i < keywordList.size(); ++i )
431428
{
432-
keywordElem.setAttribute( "vocabulary", "SIA_Geo405" );
429+
QDomElement keywordElem = doc.createElement( "Keyword" );
430+
QDomText keywordText = doc.createTextNode( keywordList.at( i ).toElement().text() );
431+
keywordElem.appendChild( keywordText );
432+
if ( sia2045 )
433+
{
434+
keywordElem.setAttribute( "vocabulary", "SIA_Geo405" );
435+
}
436+
wmsKeywordElem.appendChild( keywordElem );
433437
}
434-
wmsKeywordElem.appendChild( keywordElem );
435-
}
436438

437-
if ( keywordList.size() > 0 )
439+
if ( keywordList.size() > 0 )
440+
{
441+
serviceElem.appendChild( wmsKeywordElem );
442+
}
443+
}
444+
else
438445
{
446+
QDomNodeList keywordNodeList = keywordListElem.elementsByTagName( "value" );
447+
QStringList keywordList;
448+
for ( int i = 0; i < keywordNodeList.size(); ++i )
449+
{
450+
keywordList.push_back( keywordNodeList.at( i ).toElement().text() );
451+
}
452+
QDomElement wmsKeywordElem = doc.createElement( "Keywords" );
453+
if ( service.compare( "WCS", Qt::CaseInsensitive ) == 0 )
454+
wmsKeywordElem = doc.createElement( "keywords" );
455+
QDomText keywordText = doc.createTextNode( keywordList.join( ", " ) );
456+
wmsKeywordElem.appendChild( keywordText );
439457
serviceElem.appendChild( wmsKeywordElem );
440458
}
441459
}
@@ -1068,7 +1086,7 @@ QSet<QString> QgsServerProjectParser::findRestrictedLayers() const
10681086
}
10691087
}
10701088
}
1071-
1089+
10721090
// wmsLayerRestrictionValues contains LayerIDs
10731091
if ( mUseLayerIDs )
10741092
{

0 commit comments

Comments
 (0)