Я пытаюсь проверить документ с помощью файла xsd, с lxml в Python:
from lxml import etree
xmlschema_doc = etree.parse('somefile.xsd')
xmlschema = etree.XMLSchema(xmlschema_doc)
xml_doc = etree.parse('somefile.xml')
xmlschema.assertValid(xml_doc)
Я получаю сообщение об ошибке:
lxml.etree.DocumentInvalid: Element 'someelement': [facet 'pattern'] The value '' is not accepted by the pattern '\s*.{0,10}\s*'., line 24
Строка 24:
<someelement></somelement>
Что указано в моем XSD-файле следующим образом:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
<xs:simpleType name="someelement">
<xs:restriction base="xs:string">
<xs:pattern value="\s*.{0,10}\s*"/>
</xs:restriction>
</xs:simpleType>
Странно то, что пустая строка должна быть действительной для шаблона \s*.{0,10}\s*
У вас есть какое-нибудь объяснение?
Редактировать: Добавляет XSD-определение someelement и удаляет ссылку на python re