Skip to content
Snippets Groups Projects
Commit c7096c51 authored by Jorrit Schaap's avatar Jorrit Schaap
Browse files

TMSS-761: trying to comply with weird XML schema definitions

parent 82c53f87
No related branches found
No related tags found
No related merge requests found
...@@ -1488,16 +1488,17 @@ class Sip(object): ...@@ -1488,16 +1488,17 @@ class Sip(object):
raise Exception("This SIP does not describe a correlated dataproduct. No subarray pointing available.") raise Exception("This SIP does not describe a correlated dataproduct. No subarray pointing available.")
# this will also validate the document so far # this will also validate the document so far
def get_prettyxml(self, schema_location:str = None): def get_prettyxml(self):
try: try:
dom = self.__sip.toDOM() dom = self.__sip.toDOM()
dom.documentElement.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance") dom.documentElement.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")
if schema_location is None:
# this is/was the default schema location, even though we never hosted the xsd at the astron server # XML schema's have a weird way of using namespaces and locations....
# That makes xmllint fail to validate (because the schema obviously can't be found) # search the internet, everybody thinks it's too complicated,
schema_location = "http://www.astron.nl/SIP-Lofar LTA-SIP-2.7.2.xsd" # and that it does not make sense that the schema_location/namespace should be URI's which can be URL's but are not mandated to actually serve the schema at that URL...
schema_location = "http://www.astron.nl/SIP-Lofar"
dom.documentElement.setAttribute('xsi:schemaLocation', schema_location) dom.documentElement.setAttribute('xsi:schemaLocation', schema_location)
dom.documentElement.setAttribute('xmlns:sip', schema_location.split(' ')[0]) dom.documentElement.setAttribute('xmlns:sip', schema_location)
return dom.toprettyxml() return dom.toprettyxml()
except pyxb.ValidationError as err: except pyxb.ValidationError as err:
logger.error(err.details()) logger.error(err.details())
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment