@@ -84,6 +84,7 @@ namespace QgsWms
8484 const QgsLayerTreeGroup *layerTreeGroup,
8585 bool projectSettings );
8686
87+ void addKeywordListElement ( const QgsProject *project, QDomDocument &doc, QDomElement &parent );
8788 }
8889
8990 void writeGetCapabilities ( QgsServerInterface *serverIface, const QgsProject *project,
@@ -225,8 +226,6 @@ namespace QgsWms
225226 QDomElement getServiceElement ( QDomDocument &doc, const QgsProject *project, const QString &version,
226227 const QgsServerRequest &request )
227228 {
228- bool sia2045 = QgsServerProjectUtils::wmsInfoFormatSia2045 ( *project );
229-
230229 // Service element
231230 QDomElement serviceElem = doc.createElement ( QStringLiteral ( " Service" ) );
232231
@@ -254,34 +253,7 @@ namespace QgsWms
254253 serviceElem.appendChild ( abstractElem );
255254 }
256255
257- QDomElement keywordsElem = doc.createElement ( QStringLiteral ( " KeywordList" ) );
258- // add default keyword
259- QDomElement keywordElem = doc.createElement ( QStringLiteral ( " Keyword" ) );
260- keywordElem.setAttribute ( QStringLiteral ( " vocabulary" ), QStringLiteral ( " ISO" ) );
261- QDomText keywordText = doc.createTextNode ( QStringLiteral ( " infoMapAccessService" ) );
262- keywordElem.appendChild ( keywordText );
263- keywordsElem.appendChild ( keywordElem );
264- serviceElem.appendChild ( keywordsElem );
265- QStringList keywords = QgsServerProjectUtils::owsServiceKeywords ( *project );
266- if ( !keywords.isEmpty () )
267- {
268- for ( int i = 0 ; i < keywords.size (); ++i )
269- {
270- QString keyword = keywords.at ( i );
271- if ( !keyword.isEmpty () )
272- {
273- keywordElem = doc.createElement ( QStringLiteral ( " Keyword" ) );
274- keywordText = doc.createTextNode ( keyword );
275- keywordElem.appendChild ( keywordText );
276- if ( sia2045 )
277- {
278- keywordElem.setAttribute ( QStringLiteral ( " vocabulary" ), QStringLiteral ( " SIA_Geo405" ) );
279- }
280- keywordsElem.appendChild ( keywordElem );
281- }
282- }
283- serviceElem.appendChild ( keywordsElem );
284- }
256+ addKeywordListElement ( project, doc, serviceElem );
285257
286258 QString onlineResource = QgsServerProjectUtils::owsServiceOnlineResource ( *project );
287259 if ( onlineResource.isEmpty () )
@@ -770,6 +742,18 @@ namespace QgsWms
770742
771743 QDomElement layerParentElem = doc.createElement ( QStringLiteral ( " Layer" ) );
772744
745+ // Root Layer title
746+ QDomElement layerParentTitleElem = doc.createElement ( QStringLiteral ( " Title" ) );
747+ QDomText layerParentTitleText = doc.createTextNode ( project->title () );
748+ layerParentTitleElem.appendChild ( layerParentTitleText );
749+ layerParentElem.appendChild ( layerParentTitleElem );
750+
751+ // Root Layer abstract
752+ QDomElement layerParentAbstElem = doc.createElement ( QStringLiteral ( " Abstract" ) );
753+ QDomText layerParentAbstText = doc.createTextNode ( project->title () );
754+ layerParentAbstElem.appendChild ( layerParentAbstText );
755+ layerParentElem.appendChild ( layerParentAbstElem );
756+
773757 // Root Layer name
774758 QDomElement layerParentNameElem = doc.createElement ( QStringLiteral ( " Name" ) );
775759 QString rootName = QgsServerProjectUtils::wmsRootName ( *project );
@@ -785,11 +769,12 @@ namespace QgsWms
785769 }
786770 layerParentElem.appendChild ( layerParentNameElem );
787771
788- // Root Layer title
789- QDomElement layerParentTitleElem = doc.createElement ( QStringLiteral ( " Title" ) );
790- QDomText layerParentTitleText = doc.createTextNode ( project->title () );
791- layerParentTitleElem.appendChild ( layerParentTitleText );
792- layerParentElem.appendChild ( layerParentTitleElem );
772+ // Keyword list
773+ addKeywordListElement ( project, doc, layerParentElem );
774+
775+ // Metadata (empty but needed for OGC tests RECOMMENDATIONS)
776+ QDomElement metaUrlElem = doc.createElement ( QStringLiteral ( " MetadataURL" ) );
777+ layerParentElem.appendChild ( metaUrlElem );
793778
794779 // Root Layer tree name
795780 if ( projectSettings )
@@ -1734,6 +1719,35 @@ namespace QgsWms
17341719 }
17351720 }
17361721
1722+ void addKeywordListElement ( const QgsProject *project, QDomDocument &doc, QDomElement &parent )
1723+ {
1724+ bool sia2045 = QgsServerProjectUtils::wmsInfoFormatSia2045 ( *project );
1725+
1726+ QDomElement keywordsElem = doc.createElement ( QStringLiteral ( " KeywordList" ) );
1727+ // add default keyword
1728+ QDomElement keywordElem = doc.createElement ( QStringLiteral ( " Keyword" ) );
1729+ keywordElem.setAttribute ( QStringLiteral ( " vocabulary" ), QStringLiteral ( " ISO" ) );
1730+ QDomText keywordText = doc.createTextNode ( QStringLiteral ( " infoMapAccessService" ) );
1731+ keywordElem.appendChild ( keywordText );
1732+ keywordsElem.appendChild ( keywordElem );
1733+ parent.appendChild ( keywordsElem );
1734+ QStringList keywords = QgsServerProjectUtils::owsServiceKeywords ( *project );
1735+ for ( const QString &keyword : qgis::as_const ( keywords ) )
1736+ {
1737+ if ( !keyword.isEmpty () )
1738+ {
1739+ keywordElem = doc.createElement ( QStringLiteral ( " Keyword" ) );
1740+ keywordText = doc.createTextNode ( keyword );
1741+ keywordElem.appendChild ( keywordText );
1742+ if ( sia2045 )
1743+ {
1744+ keywordElem.setAttribute ( QStringLiteral ( " vocabulary" ), QStringLiteral ( " SIA_Geo405" ) );
1745+ }
1746+ keywordsElem.appendChild ( keywordElem );
1747+ }
1748+ }
1749+ parent.appendChild ( keywordsElem );
1750+ }
17371751 }
17381752
17391753
0 commit comments