[mapserver-dev] XML validation script in msautotest

Even Rouault even.rouault at mines-paris.org
Sat Oct 26 12:31:02 PDT 2013


Hi,

I've added in master a msautotest/pymod/xmlvalidate.py script that can be used 
to validate XML documents. It is tuned for XML documents using OGC schemas, 
but can potentially work in other contexts.

To use it, as a preliminary step, you need to first download the OGC schemas 
and rewrite the URLs so that everything is local to have very fast validation 
( I did try the XML_CATALOG_FILES mechanism to avoid rewriting URLs but there 
were some libxml2 warnings that confused lxml ):

cd msautotest/wxs
python ../pymod/xmlvalidate.py -download_ogc_schemas

Then you can do for example :

$ python ../pymod/xmlvalidate.py expected/sos_cap.xml

(no output so validates)

Or more interesting :

$ python ../pymod/xmlvalidate.py -schema expected/wfs_describe.xml 
expected/wfs_get_feature.xml 
Element '{http://mapserver.gis.umn.edu/mapserver}province', attribute 'fid': 
'province.Nova Scotia' is not a valid value of the atomic type 'xs:ID'., line 
34

Well in that case, it happens that our mapfile configuration is not correct as 
we use an attribute that can generate invalid gml:id for features.

(The script has some tuning to discard the mime headers in .xml files, to make 
it easier to use)

For now, I've added its use when XML POST requests are done in tests. This 
only prints a warning message when XML validation fails

I've fixed one instance of invalid XML POST in wfs_filter.map  ( 
https://github.com/mapserver/msautotest/commit/dc743322b5f2ede3ad208b3abb8de0f3996f9eb0 
) but I can see many warnings in wcs_post.map. The main reason is the absence 
of " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.opengis.net/wcs/2.0 
http://schemas.opengis.net/wcs/2.0/wcsAll.xsd"", but even when adding it, 
there are errors in some GetCoverage requests.

We could also imagine adding special syntax in .map to ask for the output of a 
request to be validated.

# XML_VALIDATE the_xml.xml [ the_schema.xml ]

Have fun !

Even

-- 
Geospatial professional services
http://even.rouault.free.fr/services.html


More information about the mapserver-dev mailing list