@@ -188,6 +188,15 @@ void QgsProjectParser::featureTypeList( QDomElement& parentElement, QDomDocument
188
188
abstractElem.appendChild ( abstractText );
189
189
layerElem.appendChild ( abstractElem );
190
190
191
+ // keyword list
192
+ if ( !layer->keywordList ().isEmpty () )
193
+ {
194
+ QDomElement keywordsElem = doc.createElement ( " Keywords" );
195
+ QDomText keywordsText = doc.createTextNode ( layer->keywordList () );
196
+ keywordsElem.appendChild ( keywordsText );
197
+ layerElem.appendChild ( keywordsElem );
198
+ }
199
+
191
200
// appendExGeographicBoundingBox( layerElem, doc, layer->extent(), layer->crs() );
192
201
193
202
QDomElement srsElem = doc.createElement ( " SRS" );
@@ -234,6 +243,27 @@ void QgsProjectParser::featureTypeList( QDomElement& parentElement, QDomDocument
234
243
bBoxElement.setAttribute ( " maxy" , QString::number ( layerExtent.yMaximum () ) );
235
244
layerElem.appendChild ( bBoxElement );
236
245
246
+ // layer metadata URL
247
+ QString metadataUrl = layer->metadataUrl ();
248
+ if ( !metadataUrl.isEmpty () )
249
+ {
250
+ QDomElement metaUrlElem = doc.createElement ( " MetadataURL" );
251
+ QString metadataUrlType = layer->metadataUrlType ();
252
+ metaUrlElem.setAttribute ( " type" , metadataUrlType );
253
+ QString metadataUrlFormat = layer->metadataUrlFormat ();
254
+ if ( metadataUrlFormat == " text/xml" )
255
+ {
256
+ metaUrlElem.setAttribute ( " format" , " XML" );
257
+ }
258
+ else
259
+ {
260
+ metaUrlElem.setAttribute ( " format" , " TXT" );
261
+ }
262
+ QDomText metaUrlText = doc.createTextNode ( metadataUrl );
263
+ metaUrlElem.appendChild ( metaUrlText );
264
+ layerElem.appendChild ( metaUrlElem );
265
+ }
266
+
237
267
parentElement.appendChild ( layerElem );
238
268
}
239
269
}
@@ -246,8 +276,6 @@ void QgsProjectParser::owsGeneralAndResourceList( QDomElement& parentElement, QD
246
276
// set parentElement id
247
277
QFileInfo projectFileInfo ( mProjectPath );
248
278
parentElement.setAttribute ( " id" , " ows-context-" + projectFileInfo.baseName () );
249
- // OWSContext General element
250
- QDomElement serviceElem = doc.createElement ( " Service" );
251
279
252
280
QDomElement propertiesElem = mXMLDoc ->documentElement ().firstChildElement ( " properties" );
253
281
if ( propertiesElem.isNull () )
@@ -256,6 +284,7 @@ void QgsProjectParser::owsGeneralAndResourceList( QDomElement& parentElement, QD
256
284
return ;
257
285
}
258
286
287
+ // OWSContext General element
259
288
QDomElement generalElem = doc.createElement ( " General" );
260
289
261
290
QDomElement windowElem = doc.createElement ( " Window" );
@@ -285,7 +314,7 @@ void QgsProjectParser::owsGeneralAndResourceList( QDomElement& parentElement, QD
285
314
286
315
// keyword list
287
316
QDomElement keywordListElem = propertiesElem.firstChildElement ( " WMSKeywordList" );
288
- if ( !keywordListElem.isNull () )
317
+ if ( !keywordListElem.isNull () && !keywordListElem. text (). isEmpty () )
289
318
{
290
319
bool siaFormat = featureInfoFormatSIA2045 ();
291
320
@@ -305,7 +334,7 @@ void QgsProjectParser::owsGeneralAndResourceList( QDomElement& parentElement, QD
305
334
306
335
if ( keywordList.size () > 0 )
307
336
{
308
- serviceElem .appendChild ( keywordsElem );
337
+ generalElem .appendChild ( keywordsElem );
309
338
}
310
339
}
311
340
@@ -346,7 +375,7 @@ void QgsProjectParser::owsGeneralAndResourceList( QDomElement& parentElement, QD
346
375
QDomText lowerCornerText = doc.createTextNode ( QString::number ( combinedBBox.xMinimum () ) + " " + QString::number ( combinedBBox.yMinimum () ) );
347
376
lowerCornerElem.appendChild ( lowerCornerText );
348
377
bboxElem.appendChild ( lowerCornerElem );
349
- QDomElement upperCornerElem = doc.createElement ( " ows:upperCorner " );
378
+ QDomElement upperCornerElem = doc.createElement ( " ows:UpperCorner " );
350
379
QDomText upperCornerText = doc.createTextNode ( QString::number ( combinedBBox.xMaximum () ) + " " + QString::number ( combinedBBox.yMaximum () ) );
351
380
upperCornerElem.appendChild ( upperCornerText );
352
381
bboxElem.appendChild ( upperCornerElem );
@@ -676,9 +705,9 @@ void QgsProjectParser::addLayers( QDomDocument &doc,
676
705
}
677
706
678
707
// keyword list
679
- QStringList keywordStringList = currentLayer->keywordList ().split ( " ," );
680
- if ( keywordStringList.size () > 0 )
708
+ if ( !currentLayer->keywordList ().isEmpty () )
681
709
{
710
+ QStringList keywordStringList = currentLayer->keywordList ().split ( " ," );
682
711
bool siaFormat = featureInfoFormatSIA2045 ();
683
712
684
713
QDomElement keywordListElem = doc.createElement ( " KeywordList" );
@@ -768,10 +797,18 @@ void QgsProjectParser::addLayers( QDomDocument &doc,
768
797
{
769
798
QDomElement metaUrlElem = doc.createElement ( " MetadataURL" );
770
799
QString metadataUrlType = currentLayer->metadataUrlType ();
771
- if ( !metadataUrlType. isEmpty () )
800
+ if ( version == " 1.1.1 " )
772
801
{
773
802
metaUrlElem.setAttribute ( " type" , metadataUrlType );
774
803
}
804
+ else if ( metadataUrlType == " FGDC" )
805
+ {
806
+ metaUrlElem.setAttribute ( " type" , " FGDC:1998" );
807
+ }
808
+ else if ( metadataUrlType == " TC211" )
809
+ {
810
+ metaUrlElem.setAttribute ( " type" , " ISO19115:2003" );
811
+ }
775
812
QString metadataUrlFormat = currentLayer->metadataUrlFormat ();
776
813
if ( !metadataUrlFormat.isEmpty () )
777
814
{
@@ -1067,9 +1104,9 @@ void QgsProjectParser::addOWSLayers( QDomDocument &doc,
1067
1104
layerElem.appendChild ( styleListElem );
1068
1105
1069
1106
// keyword list
1070
- QStringList keywordStringList = currentLayer->keywordList ().split ( " ," );
1071
- if ( keywordStringList.size () > 0 )
1107
+ if ( !currentLayer->keywordList ().isEmpty () )
1072
1108
{
1109
+ QStringList keywordStringList = currentLayer->keywordList ().split ( " ," );
1073
1110
bool siaFormat = featureInfoFormatSIA2045 ();
1074
1111
1075
1112
QDomElement keywordsElem = doc.createElement ( " ows:Keywords" );
@@ -1092,19 +1129,8 @@ void QgsProjectParser::addOWSLayers( QDomDocument &doc,
1092
1129
if ( !metadataUrl.isEmpty () )
1093
1130
{
1094
1131
QDomElement metaUrlElem = doc.createElement ( " MetadataURL" );
1095
- QString metadataUrlType = currentLayer->metadataUrlType ();
1096
- if ( !metadataUrlType.isEmpty () )
1097
- {
1098
- metaUrlElem.setAttribute ( " type" , metadataUrlType );
1099
- }
1100
1132
QString metadataUrlFormat = currentLayer->metadataUrlFormat ();
1101
- if ( !metadataUrlFormat.isEmpty () )
1102
- {
1103
- QDomElement metaUrlFormatElem = doc.createElement ( " Format" );
1104
- QDomText metaUrlFormatText = doc.createTextNode ( metadataUrlFormat );
1105
- metaUrlFormatElem.appendChild ( metaUrlFormatText );
1106
- metaUrlElem.appendChild ( metaUrlFormatElem );
1107
- }
1133
+ metaUrlElem.setAttribute ( " format" , metadataUrlFormat );
1108
1134
QDomElement metaUrlORElem = doc.createElement ( " OnlineResource" );
1109
1135
metaUrlORElem.setAttribute ( " xmlns:xlink" , " http://www.w3.org/1999/xlink" );
1110
1136
metaUrlORElem.setAttribute ( " xlink:type" , " simple" );
@@ -2355,7 +2381,7 @@ void QgsProjectParser::serviceCapabilities( QDomElement& parentElement, QDomDocu
2355
2381
2356
2382
// keyword list
2357
2383
QDomElement keywordListElem = propertiesElem.firstChildElement ( " WMSKeywordList" );
2358
- if ( !keywordListElem.isNull () )
2384
+ if ( !keywordListElem.isNull () && !keywordListElem. text (). isEmpty () )
2359
2385
{
2360
2386
bool siaFormat = featureInfoFormatSIA2045 ();
2361
2387
@@ -2534,7 +2560,7 @@ void QgsProjectParser::serviceWFSCapabilities( QDomElement& parentElement, QDomD
2534
2560
2535
2561
// keyword list
2536
2562
QDomElement keywordListElem = propertiesElem.firstChildElement ( " WMSKeywordList" );
2537
- if ( !keywordListElem.isNull () )
2563
+ if ( !keywordListElem.isNull () && !keywordListElem. text (). isEmpty () )
2538
2564
{
2539
2565
bool siaFormat = featureInfoFormatSIA2045 ();
2540
2566
0 commit comments