我正在使用Python的lxml库来解析XML文件。 我需要对一个XML文件进行XML模式验证。 lxml支持XML模式验证,但必须提供XML模式文件路径/内容(有关信息在此处提供:http://lxml.de/validation.html)。然而,我不知道XML模式文件路径,它应该从XML文件头标记中解析出来。 我找不到访问这些标记的方法。
请问lxml是否支持此用例?
我正在使用Python的lxml库来解析XML文件。 我需要对一个XML文件进行XML模式验证。 lxml支持XML模式验证,但必须提供XML模式文件路径/内容(有关信息在此处提供:http://lxml.de/validation.html)。然而,我不知道XML模式文件路径,它应该从XML文件头标记中解析出来。 我找不到访问这些标记的方法。
请问lxml是否支持此用例?
如果架构是使用根元素上的属性链接的,在http://www.w3.org/2001/XMLSchema-instance
命名空间中,您可以通过在花括号中前缀命名空间URL的属性名称来检索这些属性:
XMLSchemaNamespace = '{http://www.w3.org/2001/XMLSchema-instance}'
document = lxml.parse(xmlfile)
schemaLink = document.get(XMLSchemaNamespace + 'schemaLocation')
if schemaLink is None:
schemaLink = document.get(XMLSchemaNamespace + 'noNamespaceSchemaLocation')