[Geoserver-users] GetCapabilities has missing xmlns:xlink attribute in OnlineResource tag

Dear All,

We have an instance of GeoServer v 2.17.1 installed.

The GetCapabilities xml generated by http://<>/geoserver/gwc/service/wms?TILED=TRUE&SERVICE=WMS&REQUEST=GetCapabilities&VERSION=1.1.1 appears to be invalid.

Where a style has been applied to a raster layer, the Style tag contains a LegendURL tag that contains an OnlineResource tag. This OnlineResource tag appears to be causing the following XML parsing error: “Namespace prefix xlink from href on OnlineResource is not defined”.

EPSG:900913

OS:VectorMap

VectorMap_GREY image/png

Therefore, OpenLayers and other JavaScript xml parsers fail to parse the GetCapabilties.

Is there anything I can do that will add the “xmlns:xlink” attribute to these OnlineResource tags? Any ideas will be gratefully received!

All the best,

John

I think that’s a bug in the parser - WMS 1.1.1 uses a DTD to define the XML

and that includes

So there is no need for the xlink namespace to be declared (in fact it would be invalid to declare a namespace and a DTD in the same document).

If you are working with a parser that is unable to handle DTDs then it is probably worth switching to WMS version 1.3 which is fully schema defined.

<WMS_Capabilities xmlns=“http://www.opengis.net/wms” xmlns:xlink=“http://www.w3.org/1999/xlink” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” version=“1.3.0” updateSequence=“162” xsi:schemaLocation=“http://www.opengis.net/wms http://localhost:8080/geoserver-2.18.1/schemas/wms/1.3.0/capabilities_1_3_0.xsd”>

Ian

···

Ian Turton

Thanks for the response, Ian.

Unfortunately, it appears that GeoServer 2.17.1 can return GetCapabilties v1.3.0 for http://<>/geoserver/wms? SERVICE=WMS&REQUEST=GetCapabilities&VERSION=1.3.0

but not for the required http://<>/geoserver/gwc/service/wms?TILED=TRUE&SERVICE=WMS&REQUEST=GetCapabilities&VERSION=1.3.0 as this returns v1.1.1.

The xml returned in the GetCapabilities for http://<>/geoserver/wms?SERVICE=WMS&REQUEST=GetCapabilities&VERSION=1.1.1 is valid when parsing with OpenLayers’ ol.format.WMTSCapabilities(), or Javascript’s DOMParser(), or in a text editor (e.g. Notepad++).

But the xml returned in the GetCapabilities for http://<>/geoserver/gwc/service/wms?TILED=TRUE&SERVICE=WMS&REQUEST=GetCapabilities&VERSION=1.1.1 in invalid for all three parsing methods mentioned above.

Simply by manually adding xmlns:xlink=”http://www.w3.org/1999/xlink” to the OnlineResource tag enables all three parsers to validate the xml.

Any further ideas will be gratefully received!

Many thanks,

John

···

I think that’s a bug in the parser - WMS 1.1.1 uses a DTD to define the XML

and that includes

So there is no need for the xlink namespace to be declared (in fact it would be invalid to declare a namespace and a DTD in the same document).

If you are working with a parser that is unable to handle DTDs then it is probably worth switching to WMS version 1.3 which is fully schema defined.

<WMS_Capabilities xmlns=“http://www.opengis.net/wms” xmlns:xlink=“http://www.w3.org/1999/xlink” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” version=“1.3.0” updateSequence=“162” xsi:schemaLocation=“http://www.opengis.net/wms http://localhost:8080/geoserver-2.18.1/schemas/wms/1.3.0/capabilities_1_3_0.xsd”>

Ian

On Wed, 20 Jan 2021 at 11:16, COOK, JOHN <JOHN.COOK@…5716…> wrote:

Dear All,

We have an instance of GeoServer v 2.17.1 installed.

The GetCapabilities xml generated by http://<>/geoserver/gwc/service/wms?TILED=TRUE&SERVICE=WMS&REQUEST=GetCapabilities&VERSION=1.1.1 appears to be invalid.

Where a style has been applied to a raster layer, the Style tag contains a LegendURL tag that contains an OnlineResource tag. This OnlineResource tag appears to be causing the following XML parsing error: “Namespace prefix xlink from href on OnlineResource is not defined”.

EPSG:900913

OS:VectorMap

VectorMap_GREY image/png

Therefore, OpenLayers and other JavaScript xml parsers fail to parse the GetCapabilties.

Is there anything I can do that will add the “xmlns:xlink” attribute to these OnlineResource tags? Any ideas will be gratefully received!

All the best,

John


Geoserver-users mailing list

Please make sure you read the following two resources before posting to this list:

If you want to request a feature or an improvement, also see this: https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer

Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Ian Turton

Ah yes, that’s the old (2006) WMS-C implementation from GWC. It was the first tiling standard, and has fallen out of favour many years ago.
If you are dealing with tiles, you should be using the current OGC standard for it, WMTS.

It’s been ages since I’ve dealt with DTDs, but believe you’re on the right track. All other elements using xlink are declaring the namespace locally, e.g., from the
capabilities section:

image/png image/jpeg

while they are indeed missing in the legend graphics backlink.

I’d open a ticket in GeoWebCache (that’s where the document is generated):
https://github.com/GeoWebCache/geowebcache

Fix should probably be done around this line:
https://github.com/GeoWebCache/geowebcache/blob/dfe89452b0f0a1abb7e248319adc3c3e5348b11c/geowebcache/wms/src/main/java/org/geowebcache/service/wms/WMSGetCapabilities.java#L487

along with a test verifying it works as intended. If you can code, or know someone that can, I warmly suggest to prepare a pull request with fix and test.

Best regards
Andrea

···

== GeoServer Professional Services from the experts! Visit http://goo.gl/it488V for more information. == Ing. Andrea Aime @geowolf Technical Lead GeoSolutions S.A.S. Via di Montramito 3/A 55054 Massarosa (LU) phone: +39 0584 962313 fax: +39 0584 1660272 mob: +39 339 8844549 http://www.geo-solutions.it http://twitter.com/geosolutions_it ------------------------------------------------------- Con riferimento alla normativa sul trattamento dei dati personali (Reg. UE 2016/679 - Regolamento generale sulla protezione dei dati “GDPR”), si precisa che ogni circostanza inerente alla presente email (il suo contenuto, gli eventuali allegati, etc.) è un dato la cui conoscenza è riservata al/i solo/i destinatario/i indicati dallo scrivente. Se il messaggio Le è giunto per errore, è tenuta/o a cancellarlo, ogni altra operazione è illecita. Le sarei comunque grato se potesse darmene notizia. This email is intended only for the person or entity to which it is addressed and may contain information that is privileged, confidential or otherwise protected from disclosure. We remind that - as provided by European Regulation 2016/679 “GDPR” - copying, dissemination or use of this e-mail or the information herein by anyone other than the intended recipient is prohibited. If you have received this email by mistake, please notify us immediately by telephone or e-mail.